2009-07-06 7 views
3

Si j'attache certains objets du constructeur d'interface à un autre objet en tant que variables d'instance, doivent-ils être libérés dans la méthode dealloc de l'objet parent? Le point important est que je déclare mes IBOutlets avec le codage de valeur-clé (@property) en mode (nonatomic, retain). Dans ma théorie, les objets IBOutlet sont créés lorsque la méthode initWithNibName: ... de mon contrôleur de vue est appelée et qu'elle est conservée par l'objet parent car j'ai implémenté une méthode @property en mode de conservation. Est-ce correct? Qu'en est-il si j'implémente la méthode en mode assigné?Objets IBOutlet Objective-c à libérer?

Répondre

2

Absolument correct. Vous devez libérer les propriétés (retain) dans dealloc, IBOutlet ou non. De cette façon, la gestion de la mémoire pour IBOutlets est clairement définie.

Si vous câblez des IBOutlets à partir d'objets déjà conservés (par exemple, des sous-vues de vues conservées), vous pouvez également utiliser (assigner) pour vos propriétés (et, bien sûr, ne pas les libérer dans dealloc).

Questions connexes