Sono confuso guardando la documentazione di Apple e leggendo attraverso i modelli di design Cocoa. Nella documentazione Apple per copyWithZone:
, si legge:Ignora copia o copiaWithZone: o entrambi?
Questo metodo esiste perché gli oggetti di classe può essere utilizzato in situazioni in cui hai bisogno di un oggetto che è conforme al protocollo NSCopying. Per esempio , questo metodo consente di utilizzare un oggetto di classe come chiave per un oggetto NSDictionary . Non dovresti ignorare questo metodo.
Per copy
si legge:
Questo è un metodo comodo per le classi che adottano il protocollo NSCopying . Viene sollevata un'eccezione se non esiste un'implementazione per copyWithZone :.
NSObject non supporta il protocollo NSCopying. Sottoclassi devono supportare il protocollo e implementare il metodo copyWithZone :. A versione sottoclasse di copyWithZone: il metodo deve inviare prima il messaggio , per incorporarne l'implementazione, a meno che la sottoclasse discenda direttamente da NSObject.
Negli esempi di modelli di progettazione di cacao, hanno la precedenza su copyWithZone:
e mutableCopyWithZone:
ma non prevalgono copy
quando conforme al protocollo NSCopying
. È quello che dovrei fare se voglio usare la mia sottoclasse personalizzata in un NSDictionary
come chiave?
Oppure si esegue l'override di copy
?
Analogamente, se faccio [myClass copy]
, si chiama copyWithZone:
o copy
per quella sottoclasse personalizzata? Grazie.