Sono nuovo di Objective-C (e StackOverflow) e sono un po 'girati circa le migliori pratiche in materia di proprietà.Proprietà in dealloc: rilascio quindi impostato su zero? o semplicemente rilasciare
La mia comprensione è che quando si è completamente in possesso di una proprietà è possibile evitare i bug rilasciandoli e quindi impostando immediatamente su nil in modo che anche i messaggi successivi restituiscano nil anziché un'eccezione.
[myProperty release], myProperty = nil;
Tuttavia, quando si tratta di dealloc per le proprietà "copia" e "conserva", è necessario eseguire entrambe le operazioni? o un semplice
[myProperty release] tagliato? Inoltre, ho ragione sul fatto che non ho bisogno di rilasciare le proprietà 'assign' in dealloc?
Grazie!
+1 che la versione è tutto ciò che serve, ma mi piacerebbe evitare l'uso di 'self.myProperty = nil' in' dealloc '(potrebbe attivare metodi KVO e notificare agli osservatori di provare ad accedere a un oggetto parzialmente deallocato ...) –
Come dice Dave, la pratica corrente consigliata (da Apple) non è quella di utilizzare gli accessor per assegnare nil (e quindi rilascio) in dealloc. Non solo ha potuto attivare i metodi KVO, ma l'accessor set potrebbe essere stato sovrascritto da una sottoclasse. – JeremyP
Più vecchio e più saggio ora ... la migliore pratica sembra essere quella di utilizzare self.myProperty = nil per le proprietà di IB in viewDidUnload. Ciò consente a viewController di ristabilire la gerarchia della vista se è stata smantellata da una memoria insufficiente. – averydev