Frage

(Nur damit Sie wissen, ich lerne für iphone zu entwickeln, ohne interfacae Builder)

Ich bin Codierung meinen ersten Multi-View-App, die eine Wurzel Viewcontroller und zwei weitere Viewcontrollers besitzt und die Wurzel verwendet Viewcontroller verzögertes Laden, also wenn viewDidLoad, schafft es den ersten Viewcontroller und fügt seinen Blick auf die Subview, aber das andere nicht erstellen, bis es gebraucht wird. Aber nach der zweiten geladen ist, sie beide dort bleiben, bis die Anwendung beendet (es sei denn es eine Speicher Warnung erhält).

Also ich frage mich: wenn der Benutzer schaltet zwei die andere Ansicht, ich sollte die andere entladen, die Löschungen wird (indem Sie ihn auf Null - es ist eine Halteeigenschaft)? So jedes Mal der Benutzer auf die Schaltfläche klickt, wird der aktuelle Viewcontroller entladen (nachdem er aus dem Superview entfernt wird) und die nächste wird geladen und hinzugefügt als ein Subview?

Das ist also das Richtige zu tun, oder ist es richtig, aber nur, wenn die Anwendung viele Ansichten hat und ich bin genug, um zu rechtfertigen, dies nicht zu tun kompliziert, oder ist es schlecht, dass es überhaupt zu tun, und ich soll nur lassen didReceiveMemoryWarning kümmern sich um sie (In didReceiveMemoryWarning ich die Viewcontroller gesetzt, die auf Null nicht gerade angezeigt wird)?

War es hilfreich?

Lösung

Die Antwort hängt wirklich davon. Normalerweise sollten Sie zu null Sicht freigeben und festlegen, die nicht angezeigt wird, aber wenn der Benutzer zwischen ihnen wechseln wird häufig können Sie die versteckte Ansicht beibehalten (gecached) behalten möchten.

Sie wollen nicht wirklich Ihre App das Telefon des Benutzers zu didReceiveMemoryWarning schieben. Wenn Sie diese Warnung erhalten, passieren andere Dinge im Telefon, die Ihre Anwendung verursachen kann für einen Moment einzufrieren, während das iPhone gecached Safari-Seiten-Dumps, zwischengespeichert UIImageView Objekte, etc ... kann dieser Prozess an den Endverbraucher spürbar sein und Ihre Anwendung kann nicht so glatt das Gefühl, wie es sollte.

Es ist auch wichtig zu bedenken, dass einige Nutzer erste Generation iPhones verwendet werden können, iPod Touches und 3Gs, so dass sie den zusätzlichen Speicher des 3GS nicht haben.

aber sagen, dass ich irren auf der Seite mit dem Gedächtnis konservativ ist, so würde ich loslassen und die Aussicht zunichte machen, dann wieder instanziiert es, wenn der Benutzer es sehen will. Die Auswirkungen Ihrer alloc'ing die Ansicht gegen die Bereinigung des Systems aufgrund didReceiveMemoryWarning wird in der Regel viel weniger auf die Anwendung des Benutzers.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top