Was ist die AppDelegate und wie kann ich wissen, wenn es zu benutzen?

stimmen
123

Ich fange an, nur auf dem iPhone Apps zu arbeiten. Wie kann ich wissen, wenn ich Sachen in AppDelegate im Vergleich zu einer benutzerdefinierten Klasse setzen werden sollte? Gibt es eine Regel oder jede Art von Analogie mit einer anderen Programmiersprache wie Python oder PHP, die ein AppDelegate artigen Muster verwendet?

Veröffentlicht am 17/03/2009 um 00:00
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
220

Ich vermeide normalerweise den Design-Ansatz impliziert durch Andreas Verwendung des Begriffs „Herz der Anwendung“. Was ich damit meine ist, dass ich denke, Sie sollten zu viele Dinge in zentraler Lage vermeiden Verklumpen - gute Programmgestaltung der Regel durch „Anlass zur Sorge“ Trennung Funktionalität beinhaltet.

Ein Delegierter Objekt ist ein Objekt, das benachrichtigt wird, wenn das Objekt mit dem er verbunden ist, um bestimmte Ereignisse oder Zustände erreicht. In diesem Fall ist die Anwendung Delegieren ein Objekt, das Benachrichtigungen erhält, wenn das UIApplication Objekt bestimmte Zustände erreicht. In vielerlei Hinsicht ist es ein spezialisiertes eins-zu-eins Beobachter-Muster.

Das bedeutet, dass die „Anlass zur Sorge“ für die AppDelegate besondere UIApplication Staaten verarbeitet. Die wichtigsten davon sind:

  • ApplicationDidFinishLaunching: - gut für den Umgang mit Vor-Start-Konfiguration und Aufbau
  • applicationWillTerminate: - gut für am Ende Reinigung

Sie sollten setzen andere Funktionen in der AppDelegate vermeiden, da sie es nicht wirklich gehören. Solche anderen Funktionen gehören:

  • Dokumentdaten - sollten Sie einen Dokumentenmanager Singletons haben (für mehrere Dokumentanwendungen) oder ein Dokument Singleton (für einzelne Dokumentanwendungen)
  • Knopf / Tabelle / View-Controller, Ansicht Delegatmethoden oder andere Ansicht der Handhabung (mit Ausnahme der Konstruktion der Top-Level-Ansicht in applicationDidFinishLaunching :) - diese Arbeit sollte in der entsprechenden View-Controller-Klassen sein.

Viele Menschen abfinden müssen diese Dinge in ihre AppDelegate, weil sie faul sind, oder sie denken, das AppDelegate das ganze Programm steuert. Sie sollten Zentralisierungs in Ihrem AppDelegate vermeiden, da sie die Bereiche, die in der App trüben und nicht skaliert.

Beantwortet am 17/03/2009 um 08:40
quelle vom benutzer

stimmen
22

Ihre Anwendung Delegat ist das Herz der Anwendung. Es ist effektiv Ihr „Program Controller“.

Der Application Delegate ist die Klasse, die auf Anwendungsebene Meldungen, einschließlich der applicationDidFinishLaunching Nachricht empfängt am häufigsten verwendet, um die Schaffung von anderen Ansichten zu initiieren.

Während nicht genau ähnlich könnte man daran denken als „main ()“ Routine Ihres Cocoa-Programm.

Beantwortet am 17/03/2009 um 00:14
quelle vom benutzer

stimmen
1

Hoffe, dass dies ein wenig mehr helfen ...

Programmierer neu in dieser Sprache immer die gleiche Frage haben - wird das Programm von einem Hauptverfahren beginnen? Ja, sind Sie in diesem Fall das Recht, IOS - Anwendungen auch von einem Hauptverfahren beginnen.
Ihre Hauptklasse ruft die unten Funktion:

 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

UIApplicationMain schlägt den Cocoa Touch laufen Schleife und App - Infrastruktur , die eine schafft off - UIApplicationObjekt. Unsere Anwendung benötigt Inhalt so Objective-c einen Delegaten verwendet , dies zu umgehen. Deshalb haben wir es nennen AppDelegate (act als Delegierter UIApplication). Wir implementieren einige der optionalen Methoden dieser Delegierten und verhält sich entsprechend.

Beantwortet am 10/02/2016 um 10:44
quelle vom benutzer

stimmen
-1

@Shivam, danke.

Von dem, was von Ich verstehe appDelegate, ist in der Nähe zu dem, was ein Applicationin Android ist. Das viewDidLoad, viewDidDisappearist vergleichbar mit dem , was Android Lifecycle. Jede Anwendung hat einen Lebenszyklus von der Einleitung von Anrufen zu Unterbrechungen kommen in, um Benachrichtigungen auftauchen. Wenn Sie Ihren Code benötigen , etwas Besonderes zu tun , wenn diese systemEreignisse auftreten , dann müssen Sie Code , um die Methoden zu schreiben.

In Android nutzen wir onPause, onDestroy, onCreateirgendwie Callback - Methoden wie Systemereignisse zu handhaben .

Beantwortet am 27/01/2017 um 18:01
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more