Ich möchte wissen, ob beide viewDidUnload
und dealloc
sind immer nacheinander in der UIViewController Abbauprozess aufgerufen. Ist es möglich, dass dealloc
auf meinem View-Controller aufgerufen werden konnte, ohne dass zuvor viewDidUnload
aufgerufen wurde? In beiden Fällen würde es kein Problem sein, wenn beide Methoden aufgerufen würden - aber ich frage mich, ob jemand das sicher weiß oder etwas Licht in die Sache bringen könnte der Abbauprozess.Werden viewDidUnload und dealloc immer aufgerufen, wenn ein UIViewController abgerissen wird?
2012 Update: Es ist praktisch zu beachten, dass, als ob iOS 6 viewDidUnload
ist veraltet und sollte mit manueller Ansicht Teardown wenn in didReceiveMemoryWarning
erneuert werden.
Ein guter Artikel über das neue UIView/UIViewContoller und das neue Verhalten und seine Auswirkungen auf die joe conway blog
Ich denke, du meinst "viewDidUnload", wenn du 'viewDidLoad' in deiner Antwort sagst. 'viewDidLoad' wird nicht aufgerufen, wenn wenig Speicher vorhanden ist, aber wenn die Ansicht auf dem Bildschirm erscheint (vor' viewWillAppear'). 'viewDidUnload' wird aufgerufen, wenn eine Warnung zu wenig Speicher vorhanden ist. –
Dies sollte die richtige Antwort sein. Das hat mich heute in Schwierigkeiten gebracht. – asandroq
Es scheint, als wäre es in Ordnung, self.whatever = nil innerhalb von viewDidUnload zu machen und dann [_wasverage release] innerhalb von dealloc aufzurufen. Auf diese Weise wird, wenn viewDidUnload zuerst aufgerufen wird, das Element nicht durch delalloc überveröffentlicht, da es nicht ausgeführt wird und die Freigabemitteilung einfach wegfällt, wenn es an null gesendet wird. Kann das jemand bestätigen? – jpswain