Sto usando ARC. ARC rilascia automaticamente tutte le proprietà in dealloc
? È necessario impostare manualmente tutte le proprietà pubbliche e il campo privato su nil
? C'è qualche buon modello da seguire?Quale tipo di proprietà deve essere impostato su nil in dealloc?
risposta
Sotto ARC, il modello è ... non fare nulla in dealloc, o addirittura implementarlo. ARC si prende cura delle tue proprietà e delle variabili di istanza per te.
L'unica eccezione è che dealloc è un buon posto per annullare la registrazione per le notifiche, se l'oggetto è stato registrato per nessuno.
Buona domanda. Quando si utilizza ARC
, il compilatore implementerà per te un metodo dealloc
e gestirà implicitamente il rilascio delle variabili di istanza e delle proprietà.
Potrebbe essere ancora necessaria una personalizzazione - dealloc
se la classe deve fare qualcosa di diverso dal rilascio di memoria (ad esempio, annullare la registrazione per le notifiche come menzionato da jrturton).
È possibile ottenere una buona conoscenza di ciò che è necessario prendere in considerazione quando si passa a ARC in quelli ufficiali Apple notes.
- 1. Proprietà in dealloc: rilascio quindi impostato su zero? o semplicemente rilasciare
- 2. Perché rilasciare una proprietà che hai già impostato su zero?
- 3. iPhone - dealloc - Release vs. nil
- 4. Quale tipo di progetto deve essere creato per C++/CLI?
- 5. accessibilityIdentifier nullo quando è impostato in XI ter, deve essere impostato da User Defined Runtime attributi
- 6. Quale istruzione throw lancia se non dico quale tipo di oggetto deve essere gettato in C++?
- 7. Quale tipo deve restituire myCustomDictionary.Values?
- 8. Quale tipo di URL deve essere utilizzato in Android per l'invio di una richiesta al server?
- 9. Perché impostiamo il delegato su nil su dealloc se l'oggetto verrà distrutto comunque?
- 10. In quale colonna deve essere inserito l'indice cluster?
- 11. ro.sf.lcd_density deve essere definita come proprietà build
- 12. Quale tipo di eccezione dovrebbe essere generata in JavaScript?
- 13. DBext (Vim) - Un tipo di database valido deve essere scelto
- 14. In quale livello deve essere eseguita la validazione?
- 15. graphQL - il tipo deve essere il tipo di uscita
- 16. Errore: Il percorso del file eseguibile conducente deve essere impostato dal sistema webdriver.chrome.driver proprietà
- 17. 'hibernate.dialect' deve essere impostato quando nessuna connessione disponibile
- 18. Quale tipo di risultato deve essere restituito dal livello di servizio?
- 19. ReactJS: Quando deve essere impostato setState da isMounted?
- 20. autorelease vs. release in dealloc
- 21. Da quale thread deve essere chiamato System.exit() in un'app Swing?
- 22. C: Quale carattere deve essere usato per ptrdiff_t in printf?
- 23. Tipo di carattere predefinito impostato su Android
- 24. Xcode 7.1: Proprietà con mantenere o attributo forte deve essere del tipo di oggetto
- 25. La proprietà managedObjectContext di NSManagedObject è nil
- 26. Quale tipo di eccezione deve essere generato con un servizio WCF?
- 27. PostgreSQL: quale tipo di dati deve essere utilizzato per la valuta?
- 28. ASP.NET MVC 3: quale dll deve essere distribuito?
- 29. Dealloc viene chiamato su iPhone?
- 30. AFNetworking 2.0 ERRORE: Proprietà con 'conservare (o forte)' attributo deve essere di tipo oggetto
Le notifiche di annullamento della registrazione in dealloc sono molto importanti, poiché questo tipo di bug è molto difficile da trovare – amb
Se alcuni oggetti hanno delegati, anche qui i delegati possono essere annullati. 'someObject.delegate = nil;' – GangstaGraham
@GangstaGraham se gli oggetti hanno riferimenti deboli ai loro delegati, non dovresti aver bisogno di farlo, ma ho trovato a volte che deve essere fatto, in particolare per la vista di scorrimento e la vista web delegati, anche sotto ARC. – jrturton