2012-12-30 10 views

risposta

5

Sotto ARC, il modello è ... non fare nulla in dealloc, o addirittura implementarlo. ARC si prende cura delle tue proprietà e delle variabili di istanza per te.

L'unica eccezione è che dealloc è un buon posto per annullare la registrazione per le notifiche, se l'oggetto è stato registrato per nessuno.

+0

Le notifiche di annullamento della registrazione in dealloc sono molto importanti, poiché questo tipo di bug è molto difficile da trovare – amb

+0

Se alcuni oggetti hanno delegati, anche qui i delegati possono essere annullati. 'someObject.delegate = nil;' – GangstaGraham

+1

@GangstaGraham se gli oggetti hanno riferimenti deboli ai loro delegati, non dovresti aver bisogno di farlo, ma ho trovato a volte che deve essere fatto, in particolare per la vista di scorrimento e la vista web delegati, anche sotto ARC. – jrturton

0

Buona domanda. Quando si utilizza ARC, il compilatore implementerà per te un metodo dealloc e gestirà implicitamente il rilascio delle variabili di istanza e delle proprietà.

Potrebbe essere ancora necessaria una personalizzazione - dealloc se la classe deve fare qualcosa di diverso dal rilascio di memoria (ad esempio, annullare la registrazione per le notifiche come menzionato da jrturton).

È possibile ottenere una buona conoscenza di ciò che è necessario prendere in considerazione quando si passa a ARC in quelli ufficiali Apple notes.

Problemi correlati