Sto cercando di imparare il conteggio automatico dei riferimenti in iOS 5. Ora la prima parte di questa domanda dovrebbe essere semplice:
È corretto che NON devo scrivere istruzioni esplicite sulla proprietà di rilascio nel mio dealloc quando utilizzo ARC? In altre parole, è vero che quanto segue NON necessita di un dealloc esplicito?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
La mia domanda successiva e più importante viene da una riga del documento Transitioning to ARC Release Notes :
Non è necessario (anzi impossibile) rilasciare variabili di istanza, ma potrebbe essere necessario richiamare [self setDelegate: nil] su classi di sistema e altro codice che non è stato compilato utilizzando ARC.
Questo pone la domanda: come faccio a sapere quali classi di sistema non sono compilate con ARC? Quando dovrei creare il mio dealloc e impostare esplicitamente le proprietà di mantenimento su zero? Devo supporre che tutte le classi di framework NS e UI utilizzate nelle proprietà richiedano dealloc espliciti?
Esistono molte informazioni su SO e altrove sulle pratiche di rilascio di ivar di supporto di una proprietà quando si utilizza il tracciamento manuale dei riferimenti, ma relativamente poco su questo quando si utilizza ARC.
MyController : UIViewController
classe che crea e possiede un UIView e imposta anche il delegato della vista su se stesso. È il solo proprietario di tale punto di vista. Quando il controller viene deallocato, anche la vista dovrebbe essere deallocata. Importa quindi se il puntatore delegato pende?