Gestion mémoire to-one relationShip

2»

Réponses

  • AliGatorAliGator Membre, Modérateur
    15:38 modifié #32
    dans 1304342590:

    +1 pour les @property, par contre je ne savais pas que le getter généré par un @property(retain, nonatomic) faisait aussi un retain+autorelease...
    A vrai dire je n'ai jamais vérifié ce point précis !
  • cyranocyrano Membre
    15:38 modifié #33
    attention

    retain/autorelease est "nécessaire" mais loin d'être suffisant en multithread.

    il est vrai que @property/@synthesize masquent un peu les problemes.
  • MickMick Membre
    15:38 modifié #34
    Bon, ok. Au final, laissons les accesseurs à  @synthetize...

    Une dernière (enfin pas sûr) chose : Est-il gênant de déclarer atomic les propriétés si l'application n'est pas multithread ?  (mais pourrait le devenir par la suite...) perte de performances ?
  • AliGatorAliGator Membre, Modérateur
    15:38 modifié #35
    Si l'application n'est pas multithread, laisser les propriétés en "atomic" (c'est à  dire ne PAS mettre "nonatomic") va avoir pour conséquence que les setter/getter seront encapsulés autour d'un @synchronze(self) qui est purement inutile en monothread. Donc dans l'absolu, oui, laisser en "atomic" les propriétés si tu n'es pas multithread peut générer une perte de performance. Après elle reste négligeable je pense (vu qu'en monothread, le lock implicite généré par @synchronized sera toujours libre, aucun autre thread n'ayant pu le demander. Donc bon ça risque d'être aussi pénalisant qu'une seule instruction de plus dans ton code, j'imagine.
  • cyranocyrano Membre
    15:38 modifié #36
    soyons clair,

    pour l'instant l'optimisation, ce n'est pas (encore) un problème.

    règle N°1: (que malheureusement je ne suis pas tjrs) en développement ne PAS OPTIMISER

    règle N°2: (que malheureusement je ne suis pas tjrs) optimiser seulement a l'aide d'un profileur

    .../...

Connectez-vous ou Inscrivez-vous pour répondre.