Vorrei sapere se entrambi viewDidUnload
e dealloc
sono sempre chiamati in successione nel processo di rimozione di UIViewController. È possibile che dealloc
possa essere chiamato sul mio controller di visualizzazione senza viewDidUnload
chiamato prima?ViewDidUnload e dealloc vengono sempre chiamati quando si abbatte un UIViewController?
In entrambi i casi, se sto in sicurezza rilasciando la proprietà e conservati i riferimenti a entrambi i metodi che non sarebbe stato un problema se entrambi i metodi sono stati chiamati - ma mi chiedevo se qualcuno sapeva per certo o potrebbe far luce su il processo di demolizione.
2012 Aggiornamento: E 'utile notare che, come se iOS 6 viewDidUnload
è stato deprecato e dovrebbe essere sostituito con manuale di vista teardown se necessario in didReceiveMemoryWarning
.
Un buon articolo sul nuovo UIView/UIViewContoller e il nuovo comportamento ed i suoi effetti sulla joe conway blog
Credo che si intende 'viewDidUnload' quando si dice' viewDidLoad' nella vostra risposta. 'viewDidLoad' non viene chiamato quando c'è poca memoria, ma quando la vista apparirà sullo schermo (prima di' viewWillAppear'). 'viewDidUnload' viene chiamato quando c'è un avviso di memoria insufficiente. –
Questa dovrebbe essere la risposta corretta. Questo mi ha messo nei guai oggi. – asandroq
Sembra che sarebbe stato ok per fare self.whatever = nil all'interno di viewDidUnload e quindi chiamare [rilascio _whatever] all'interno di dealloc. In questo modo, se viewDidUnload viene chiamato per primo, l'oggetto non verrà sovrascritto da dealloc perché verrà annullato e il messaggio di rilascio verrà meno quando inviato a zero. Qualcuno può confermarlo? – jpswain