Normalerweise vermeide ich den Designansatz, den Andrews Verwendung des Begriffs "Herzstück Ihrer Anwendung" impliziert. Damit meine ich, dass Sie meiner Meinung nach vermeiden sollten, zu viele Dinge an einem zentralen Ort zusammenzufassen - ein gutes Programmdesign beinhaltet normalerweise die Trennung der Funktionalität nach "Problembereich".
Ein Delegatenobjekt ist ein Objekt, das benachrichtigt wird, wenn das Objekt, mit dem es verbunden ist, bestimmte Ereignisse oder Zustände erreicht. In diesem Fall ist der Anwendungsdelegierte ein Objekt, das Benachrichtigungen erhält, wenn das UIApplication-Objekt bestimmte Zustände erreicht. In vielerlei Hinsicht handelt es sich um ein spezielles Eins-zu-Eins-Beobachtermuster.
Dies bedeutet, dass der "Problembereich" für das AppDelegate spezielle UIApplication-Zustände behandelt. Die wichtigsten davon sind:
- applicationDidFinishLaunching: - Gut für die Konfiguration und Erstellung beim Start
- applicationWillTerminate: - Gut zum Aufräumen am Ende
Sie sollten vermeiden, andere Funktionen in das AppDelegate aufzunehmen, da diese nicht wirklich dazu gehören. Zu diesen anderen Funktionen gehören:
- Dokumentdaten - Sie sollten einen Dokumentmanager-Singleton (für mehrere Dokumentanwendungen) oder einen Dokument-Singleton (für einzelne Dokumentanwendungen) haben.
- Schaltflächen- / Tabellen- / Ansichts-Controller, Ansichtsdelegatenmethoden oder andere Ansichtsbehandlungen (mit Ausnahme der Erstellung der Ansicht der obersten Ebene in applicationDidFinishLaunching :) - Diese Arbeit sollte in den jeweiligen Ansichtssteuerungsklassen erfolgen.
Viele Leute werfen diese Dinge in ihr AppDelegate, weil sie faul sind oder denken, dass das AppDelegate das gesamte Programm steuert. Sie sollten eine Zentralisierung in Ihrem AppDelegate vermeiden, da dies die Problembereiche in der App trübt und nicht skaliert.
Ihr Bewerbungsdelegierter ist das Herzstück Ihrer Bewerbung. Es ist effektiv Ihr "Programm-Controller".
Der Anwendungsdelegierte ist die Klasse, die Nachrichten auf Anwendungsebene empfängt, einschließlich der Nachricht applicationDidFinishLaunching, die am häufigsten zum Initiieren der Erstellung anderer Ansichten verwendet wird.
Obwohl es nicht genau ähnlich ist, können Sie es sich als die "main ()" - Routine Ihres Cocoa-Programms vorstellen.
quelle
@ Shivam, danke.
Soweit ich weiß
appDelegate
, kommt es dem nahe, wasApplication
in Android ist. DasviewDidLoad
,viewDidDisappear
ist vergleichbar mit dem , was Android Lifecycle. Jede Anwendung hat einen Lebenszyklus, vom Starten über Unterbrechungen durch eingehende Anrufe bis hin zu angezeigten Benachrichtigungen. Wenn Sie Ihren Code benötigen, um etwas Besonderes zu tun, wenn diesesystem
Ereignisse auftreten, müssen Sie die Methoden codieren.In Android nutzen wir
onPause
,onDestroy
,onCreate
irgendwie Methoden Rückruf solche Systemereignisse zu handhaben .quelle
onPause
,onCreate
undonDestroy
Methoden von Android sind ähnlich wie dieviewDidDisappear
,viewDidLoad
Methoden eines iOS - View - Controller Lebenszyklus. Wenn Sie vergleichen müssen, würde ich sagen, dass dieApplication
Klasse von Android näher an derAppDelegate
von iOS wäre.Hoffe das hilft ein bisschen mehr ...
Programmierer, die neu in dieser Sprache sind, haben immer die gleiche Frage: Startet das Programm von einer Hauptmethode? Ja, Sie haben in diesem Fall Recht. IOS-Apps beginnen ebenfalls mit einer Hauptmethode.
Ihre Hauptklasse ruft die folgende Funktion auf:
UIApplicationMain startet die Cocoa Touch-Run-Loop- und App-Infrastruktur, mit der ein
UIApplication
Objekt erstellt wird. Unsere Anwendung benötigt Inhalte, daher verwendet Objective-C einen Delegaten, um dies zu handhaben. Deshalb nennen wir es AppDelegate (fungieren als Delegierter vonUIApplication
). Wir implementieren einige der optionalen Methoden dieses Delegaten und es verhält sich entsprechend.quelle