Je suis en train d'apprendre le comptage automatique de références sous iOS 5. Maintenant, la première partie de cette question devrait être facile:
-
Est-il correct de dire que je n'ai PAS besoin d'écrire des instructions de libération explicites dans mon dealloc lors de l'utilisation d'ARC? En d'autres termes, est-il vrai que le code suivant ne nécessite pas de dealloc explicite?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
-
Ma prochaine question, plus importante, provient d'une ligne dans le document Notes de mise à jour sur la transition vers ARC:
Vous n'avez pas à (en fait, vous ne pouvez pas) libérer les variables d'instance, mais vous pouvez avoir besoin d'appeler [self setDelegate:nil] sur les classes système et autres code qui ne sont pas compilés avec ARC.
Cela soulève la question : comment savoir quelles classes système ne sont pas compilées avec ARC? Quand devrais-je créer mon propre dealloc et définir explicitement les propriétés à forte rétention sur nil? Dois-je supposer que toutes les classes NS et UI du framework utilisées dans les propriétés nécessitent des deallocs explicites?
Il y a une mine d'informations sur SO et ailleurs sur les pratiques de libération de l'ivar de sauvegarde d'une propriété lors de l'utilisation du suivi manuel des références, mais relativement peu à ce sujet lors de l'utilisation d'ARC.