J'essaie d'apprendre le comptage automatique des références dans iOS 5. La première partie de cette question devrait maintenant être simple:
Est-il correct que je n'ai PAS besoin d'écrire des déclarations de propriété de libération explicites dans mon dealloc lorsque j'utilise ARC? En d'autres termes, est-il vrai que ce qui suit n'a PAS besoin d'un dealloc explicite?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
Ma question suivante et la plus importante vient d'une ligne du document Transitioning to ARC Release Notes :
Vous n'avez pas à (en effet pas) libérer les variables d'instance, mais vous devrez peut-être invoquer [self setDelegate: nil] sur les classes système et tout autre code qui n'est pas compilé à l'aide d'ARC.
Cela soulève la question: comment savoir quelles classes système ne sont pas compilées avec ARC? Quand dois-je créer mon propre dealloc et définir explicitement les propriétés conservant fortement la valeur nulle? Dois-je supposer que toutes les classes de framework NS et UI utilisées dans les propriétés nécessitent des deallocs explicites?
Il existe une mine d'informations sur le SO et ailleurs sur les pratiques de libération de l'ivar de soutien d'une propriété lors de l'utilisation du suivi manuel des références, mais relativement peu à ce sujet lors de l'utilisation de l'ARC.
MyController : UIViewController
classe qui crée et possède un UIView et définit également le délégué de la vue à lui-même. Il est le seul propriétaire de ce point de vue. Lorsque le contrôleur est libéré, la vue doit également être libérée. Est-il alors important que le pointeur du délégué soit suspendu?