Ich versuche, die automatische Referenzzählung in iOS 5 zu lernen. Jetzt sollte der erste Teil dieser Frage einfach sein:
Ist es richtig, dass ich bei Verwendung von ARC KEINE expliziten Release-Property-Anweisungen in meinen Dealloc schreiben muss? Mit anderen Worten, ist es wahr , dass die folgenden Fälle nicht eine explizite dealloc braucht?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
Meine nächste und wichtigere Frage stammt aus einer Zeile im Dokument " Übergang zu ARC-Versionshinweisen" :
Sie müssen keine Instanzvariablen freigeben (können dies auch nicht), müssen jedoch möglicherweise [self setDelegate: nil] für Systemklassen und anderen Code aufrufen, der nicht mit ARC kompiliert wurde.
Dies wirft die Frage auf: Woher weiß ich, welche Systemklassen nicht mit ARC kompiliert wurden? Wann sollte ich meinen eigenen Dealloc erstellen und explizit stark beibehaltene Eigenschaften auf Null setzen? Sollte ich davon ausgehen, dass alle in Eigenschaften verwendeten NS- und UI-Framework-Klassen explizite Freigaben erfordern?
Es gibt eine Fülle von Informationen zu SO und anderswo zu den Praktiken der Freigabe des Backing Ivar einer Eigenschaft bei Verwendung der manuellen Referenzverfolgung, aber relativ wenig dazu bei Verwendung von ARC.
MyController : UIViewController
Klasse habe, die eine UIView erstellt und besitzt und auch den Delegaten der Ansicht auf sich selbst setzt. Es ist der alleinige Inhaber dieser Ansicht. Wenn der Controller freigegeben wird, sollte auch die Ansicht freigegeben werden. Ist es dann wichtig, ob der Delegatenzeiger baumelt?