Qui potrebbe mancare qualcosa di ovvio, ma sto implementando NSCopying su uno dei miei oggetti. Quell'oggetto ha variabili di istanza private che non sono esposte tramite getter, poiché non dovrebbero essere utilizzate al di fuori dell'oggetto.Le migliori pratiche per copiare le istanze private vars con NSCopying
Nella mia implementazione di copyWithZone:
, ho bisogno di allocare/init la nuova istanza, ma anche di impostare il suo stato in modo che corrisponda all'istanza corrente. Posso ovviamente accedere allo stato privato corrente dall'interno di copyWithZone:
, ma non posso impostarlo nel nuovo oggetto, perché non ci sono accessori per quello stato.
Esiste un metodo standard per mantenere intatto la privacy dei dati?
Grazie.
Grazie per la menzione di accessors privati e pericoli di NSCopyObject. –
Non sono sicuro in che modo l'accesso di sola lettura facilita la gestione della memoria? Se non lo usi con 'assign' o' retain', non fa differenza se usi getter o la variabile direttamente. – Hemant
@Hemant, perché il chiamante non dovrebbe aver bisogno di stare attento se la proprietà è attualmente (o in futuro) in sola lettura o meno. Quella non è la faccenda del chiamante, e potrebbe cambiare nel tempo, e quindi avresti bisogno di dare la caccia a ogni pezzo di codice che lo ha fatto in modo errato. Attenendosi a semplici regole, gli errori diventano ovvi. Quando dici "oh, tranne quando mi capita di sapere che al momento è ok" allora ti stai aprendo per problemi di manutenzione. –