Questo frammento da documentazione:
- (id) copia
Valore restituito L'oggetto restituito dal metodo di protocollo NSCopying copyWithZone :, dove la zona è nil.
Discussione Questo è un metodo comodo per le classi che adottano il protocollo NSCopying. Viene sollevata un'eccezione se non c'è implementazione per copyWithZone :.
NSObject non supporta il protocollo NSCopying. Le sottoclassi devono supportare il protocollo e implementare il metodo copyWithZone :. Una versione sottoclasse di copyWithZone: il metodo dovrebbe inviare il messaggio a super first, per incorporarne l'implementazione, a meno che la sottoclasse non discenda direttamente da NSObject.
Considerazioni speciali Se si utilizza la memoria gestita (non la garbage collection), questo metodo conserva il nuovo oggetto prima di restituirlo. L'invocatore del metodo, tuttavia, è responsabile del rilascio dell'oggetto restituito.
+1 buona domanda – andy
Proprio come una regola empirica, in Cocoa devi rilasciare tutto ciò che possiedi. Possiedi qualcosa se lo hai messaged con nuovo, copia, assegna o conserva. Se non hai chiamato uno di questi metodi, non lo possiedi e non dovresti rilasciarlo. –