2010-08-29 4 views
6

Fazit ist, ich habe an einer App gearbeitet, und es scheint, dass, wenn ich eine UIAlert in viewDidLoad platzieren, wird es zweimal aufgerufen (von einer Delegate-Methode von UIImagePickerController). Wenn ich es in viewDidAppear setze, wird es einmal aufgerufen.Unterschied zwischen viewDidAppear, viewDidLoad in iPhone/iOS?

Ich habe die Dokumentation durchgesehen, aber es verwirrt mich nur.

+0

Konnten Sie etwas Code bekannt geben? – rano

+0

haben Sie versucht, einen Haltepunkt zu setzen und den Call-Stack zu überprüfen? – Mark

Antwort

8

Ein UIView-Objekt kann mehrmals in den Speicher geladen und freigegeben werden, ohne dass es zum Ansichtsstapel hinzugefügt und auf dem Bildschirm angezeigt wird.

Meine Vermutung ist, dass Sie 2 Verweise auf diese Ansicht haben (vielleicht eine in einer Nib-Datei?), So wird es geladen, dann freigegeben, wenn die zweite Referenz geladen und der gleichen Eigenschaft zugewiesen wird, dann nur die letztere zum Ansichtsstapel hinzugefügt. Sie können dies sehen, indem Sie (NSLog) den Integer-Wert von self ("% ld", (long int) self) in den Methoden viewDidLoad und viewDidAppear ausdrucken.