Was ist Objective C die Reihenfolge der Ausführung nach UIApplicationMain in Main?
Könnte mir bitte jemand erklären, wie die Kontrolle der Ausführung fließt in einer iOS-Anwendung? Ich weiß, dass UIApplicationMain ersten mal aufgerufen wird, vom main. Was dann? Was ist die Beziehung zwischen meinem definierten Methoden und die wichtigsten? Ist es alle event-driven-oder kann es werden einige strukturierte Reihenfolge?
Ich meine nicht so vage, ich muss nur wissen, wo zu beginnen. Vielleicht bin ich bei dieser Suche in die falsche Richtung.
Beispielsweise in C++ würde ich so etwas machen:
#include "myMethods.h"
int main (int argc, char * const argv[]) {
Method1(); //Initialization
Method2(); //Opening views and options
Method3(); //Meat of the program
return 0;
}
Vielen Dank im Voraus.
- FYI,
UIApplicationMain()
kehrt nie zurück. Die app beendet wird, über einen Aufrufexit()
. Also alles, was Sie nachUIApplicationMain(argc, argv, nil, nil);
immain()
wird nie ausgeführt. Nie und nimmer. - Ugh. @Dave wenn das ist wahr, das ist wirklich grosses mich aus. Es ist wie zurück zu den Tagen von BASIC, wenn wir nur AUFHÖREN in der Mitte eines GOSUB !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie sagte UIApplicationMain erstellt eine Anwendung die Ausführung in das system. Unter den Sachen, die Anwendung Ladevorgang nicht, ich nehme an, Sie sind daran interessiert, was relevant ist zu einer bestimmten Anwendung. Auch ich vermute einen typischen Fall, der illustriert, die in viele Projekt-Vorlagen, die Xcode zur Verfügung stellt.
Dem laden der Anwendung-Prozess sieht in der Anwendung der information property list. Dort findet er 'Main nib file base name', und die UIApplication Instanz Ihrer Anwendung lädt die entsprechende nib-Datei aus dem application bundle. Diese nib-Datei gibt ein application-delegate-Klasse und sagt zu verbinden, wird eine Instanz der Klasse, die das delegate-Eigenschaft der UIApplication-Instanz.
Je nach Haupt-nib-Datei, andere Objekte erstellt werden können, und verbunden, wie auch, zum Beispiel, das Fenster der Anwendung, die Haupt-view-controller, etc.
Nun die Ladesequenz beendet, und alles ist event-driven, ausgehend von der application delegate-Klasse, um die berühmten
-applicationDidFinishLaunching:
Nachricht.So, wie von Ihnen erwähnt, die
main()
Funktion inmain.m
ist der Ausgangspunkt, der ruft dannUIApplicationMain()
. Wenn Sie das Kontrollkästchen der Dokumente, Sie werden sehen, dassUIApplicationMain
nimmt vier Argumente:Den ersten zwei von diesen sind nur das argument zählen, und der Variablen-Liste übergeben von
main()
. Aber der Dritte und vierte Argumente sind Zeiger auf NSStrings. Das Dritte argument gibt an, welche Klasse sollteUIApplication
. Es sei denn, Sie beabsichtigen, auf UnterklassenUIApplication
geben Sienil
für das Dritte argument. Das vierte argument gibt an, welche Klasse sollte UIApplication die delegate-Klasse, die reagieren auf nichts angegeben in derUIApplicationDelegate
Protokoll. Sie nicht haben, um dreck mit diesem direkt, wie es enthalten ist in all den Xcode-Vorlagen:Lassen Sie sich nicht die
NSStringFromClass([AppDelegate class]))
bit-werfen Sie. Das ist nur eine ausgefallene Art der Angabe des vierten Arguments so, dass die richtigen Delegaten aufgerufen wird, sollte man später ändern Sie den Namen desAppDelegate.m
.UIApplication
beginnt die Haupt-event-Schleife und fordert-application:didFinishLaunchingWithOptions:
, eine der Methoden, seine Stellvertretung zu handhaben. Werfen Sie einen Blick aufAppDelegate.m
, und finden Sie einige template-code für diese Methode. Dies ist, wo Sie beginnen können Sie anpassen, Dinge zu schaffen, müssen zur Stelle sein, bevor dieUIWindow
und andere Instanzen vonUIView
erstellt:So, jetzt ist die Anwendung der Fenster-und root-view-controller definiert werden, und die app ausgeschaltet ist und läuft.
All dies, und noch einiges mehr, ist sehr gut erklärt hier: http://oleb.net/blog/2012/02/app-launch-sequence-ios-revisited/
Vom Apple-Dokumente -
Lebenszyklus der Anwendung stellt den Ablauf der Ereignisse zwischen dem Start und der Beendigung Ihrer Anwendung. In der iOS-der Benutzer startet die Anwendung durch Tippen auf das entsprechende icon auf dem Home-Bildschirm. Kurz nach dem tap erfolgt, zeigt das system einige übergangs-Grafiken und Erlöse starten Sie Ihre Anwendung durch den Aufruf der main-Funktion. Von diesem Punkt an, wird der Großteil der Initialisierung Arbeit ausgehändigt wird, UIKit, die Lasten des Hauptfensters der Anwendung nib-Datei und bereitet die Ereignis-Schleife.
Anwendungs-Lebenszyklus