Esistono due nuovi attributi di gestione della memoria per le proprietà introdotte da ARC stronge weak.
A parte copy, che è ovviamente qualcosa di completamente diverso, ci sono differenze tra strongvs retaine weakvs assign?
Da quanto ho capito, l'unica differenza qui è che weakverrà assegnato nilal puntatore, mentre assignnon lo farà, il che significa che il programma andrà in crash quando invio un messaggio al puntatore una volta rilasciato. Ma se lo uso weak, questo non accadrà mai, perché il messaggio inviato a nilnon farà nulla.
Non conosco differenze tra stronge retain.
C'è qualche motivo per cui dovrei usare assigne retainin nuovi progetti, o sono il tipo di deprecato?
weake strong) e 4 di qualificazione di durata variabile ( __strong, __weak, __unsafe_unretained, __autoreleasing). Vedi le note ARC di seguito.
assigndurante la compilazione con ARC era un errore. Ci sono molte risposte cancellate su questo. Sembra che sia stato modificato prima della versione finale. unsafe_unretainedè l'attributo preferito per molti di noi primi utenti. Per la prova che unsafe_unretainedè un attributo valido, guarda la "Programmazione con Objective-C" di Apple nella sezione "Incapsulamento dei dati" sotto il sottotitolo "Usa riferimenti non mantenuti non sicuri per alcune classi". Che dice: "Per una proprietà, questo significa usare l'attributo unsafe_unretained:"
strong,weakeunsafe_unretained.