Frage

Ich glaube zu wissen, was die App tut, Delegieren.Es hat einige nette Methoden wie -applicationDidFinishLaunching wird aufgerufen, wenn die app beendet hat starten, und so weiter.Aber was ist das eigentlich?Ist, dass ein Objekt instanziiert, in der UIApplicationMain Funktion?

Und wie funktioniert es, dass jede Klasse in meiner app hat Zugriff auf das App-Delegate-Objekt?Gibt es eine gute Grafik, die auf das Netz und visualisiert diese Beziehungen?

War es hilfreich?

Lösung

In Kakao, ein delegate ist ein Objekt, das ein anderes Objekt verweist, um auf Fragen des Verhaltens und informiert über Veränderungen in Ihrem Zustand.Zum Beispiel, einen UITableViewDelegate ist verantwortlich für die Beantwortung von Fragen darüber, wie die UITableView Verhalten sollte, wenn die Auswahl abgeschlossen haben oder in Zeilen neu angeordnet werden.Es ist das Objekt, das die UITableView fragt, wenn er wissen will, wie hoch eine bestimmte Zeile sollte.In der Model-View-Controller-Paradigma, die Delegierten sind Controller, und viele delegates' names end in "Controller".

Gefahr, banal, die UIApplicationDelegate ist der Delegierte für die UIApplication.Die Beziehung ist ein bisschen mehr offensichtlich in Cocoa (Mac) als in Cocoa Touch (iPhone), da die NSApplication delegieren, ist in der Lage zu kontrollieren, die NSApplication das Verhalten direkt (verhindert die Anwendung beenden zum Beispiel).iPhone erlauben nicht viel Kontrolle über die UIApplication, also meistens die UIApplicationDelegate ist über änderungen informiert, anstatt eine aktive Entscheidungsfindung.

Die UIApplicationDelegate ist nicht unbedingt verfügbar, von überall in der app.Das singleton UIApplication ist ([UIApplication sharedApplication]), und durch Sie können Sie finden, die seiner Stellvertretung.Aber dies bedeutet nicht, dass es angemessen für jedes Objekt in einer app zu sprechen direkt an den app-Delegaten.Im Allgemeinen, ich abraten Entwickler von zufälligen Objekten, sprechen Sie mit den app-Delegaten.Die meisten Probleme, die gelöst werden so besser gelöst werden durch Singletons, NSNotification oder andere Objekte delegieren.

Wie zu seiner Gründung, auf dem Mac es gibt nichts Magisches über den app-Delegaten.Es ist nur ein Objekt instanziiert und LAN) durch die Feder in den meisten Fällen.Auf dem iPhone, jedoch die app delegieren kann etwas Magisches, wenn instanziiert UIApplicationMain().Der vierte parameter ist ein NSString mit Angabe der app-delegate-Klasse und UIApplicationMain() erstellen, und legen Sie es als Delegierter der sharedApplication.Dies ermöglicht Ihnen, die delegieren, ohne eine Feder (etwas, das sehr schwierig auf Mac).Wenn der vierte parameter UIApplicationMain() ist null (wie es in der Apple-Vorlagen), dann wird der Delegat erstellt und LAN) von der main-Spitze, genau wie das Hauptfenster.

Andere Tipps

Die Aufgabe wird auf diese Weise instanziiert;

Die Haupt-Funktion sucht die Hauptspitze Satz im info.plist. Die Spitze hat als AppDelegate die zu einem gewissen Klasse festgelegt ist, die UIApplicationDelegates und die erforderlichen Methoden implementieren müssen. Die AppDelegate lädt dann einige Viewcontroller.

Es dient als Anwendung breites Rückrufobjekt für Ereignisse, die die gesamte Anwendung, wie Low-Speicher betreffen, etc.

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