L'oggetto A è responsabile del rilascio di qualsiasi riferimento ad altri oggetti (oggetto B, oggetto C, ecc.) Quando viene deallocato, ciò non avviene automaticamente.
Questo viene fatto nel metodo -dealloc
sull'oggetto:
- (void)dealloc
{
[propertyB release];
[propertyC release];
[super dealloc];
}
(o se le proprietà sono di lettura/scrittura e composto come retain
, è possibile sostituire [self setPropertyB:nil]
, ecc).
Quindi, quando tutti i riferimenti all'oggetto A scompaiono, vengono deallocati, riducendo a loro volta il conteggio dei riferimenti sulle proprietà B e C. Se questi oggetti sono di proprietà solo dell'oggetto A, anch'essi finiranno a seguito di una dislocazione.
(Questo è vero per tutti gli sviluppi del sistema operativo iPhone che hai etichettato. Suppongo che tu non stia parlando dell'ambiente garbage-collected sul Mac, che ha regole e comportamenti diversi e fa alcune cose automaticamente.)
fonte
2010-07-15 15:12:34
+1 devi rilasciare anche se la proprietà è dichiarata come 'copia'. –