Beziehung zwischen AppDelegate und main.m

7

Ok, ich bin völlig neu bei obj-c + cacao, also ist das wahrscheinlich offensichtlich, aber hier ist:

Ich bin von Kommandozeilen-Apps zu Kakao-Apps umgezogen, um zu lernen, wie man in Xcode mit objective-c arbeitet. Eine Sache, die ich nicht wirklich verstehe, ist die Rolle des AppDelegate und wie es sich mit main.m

verbindet

Es sieht so aus, als könnten Sie Ihr gesamtes Programm in das Appdelegate setzen und es würde gut laufen, und Sie brauchen nicht einmal main.m, aber nicht umgekehrt, wenn Sie eine Kakao-App machen, müssen Sie zumindest habe das appdelegate.

Ich habe eine Menge PHP-Web-Entwicklung und Kommandozeilen-Tools gemacht, also denke ich, was ich suche, ist die Datei, die das Programm zuerst ausführen wird und den Rest von ihnen "kontrollieren" soll / p>

Kann mir jemand helfen zu verstehen, was in einem Cocoa-Programm vor sich geht, wie AppDelegate und main.m miteinander verwandt sind (und was nicht) und wie der Programmfluss sein soll?

    
Andrew 12.08.2010, 01:12
quelle

2 Antworten

8

Ein Schlüsselmerkmal vieler objektorientierter Systeme (wie Cocoa) ist "Inversion der Kontrolle" , was im Grunde genommen bedeutet, dass das Framework alles ausführt und der von Ihnen geschriebene Code unter seiner Kontrolle steht.

Im Gegensatz zu PHP schreiben Sie also nicht den Code, der beim Start ausgeführt wird. Sie definieren Methoden für den Anwendungsdelegaten, Controller, Sichten und andere Objekte und lassen das Framework diese Methoden bei Bedarf aufrufen. Sie werden nie den gesamten "Kontrollfluss" im gesamten Programm sehen; Sie werden es nur sehen, wenn die Kontrolle in Ihre Teile des Programms fließt.

Dies kann auf den ersten Blick verwirrend sein, wenn Sie herausfinden, wie Sie das Framework dazu bringen können, Ihren Code zu den Zeiten und in der von Ihnen erwarteten Reihenfolge aufzurufen, aber auf lange Sicht macht es die Dinge einfacher, da Sie darauf vertrauen können der Rahmen, um sich um viele Dinge für dich zu kümmern.

In einer Cocoa-App befindet sich ein Großteil der Logik der App tatsächlich in View-Controllern und nicht im App-Delegaten. Der App-Delegat übernimmt normalerweise die Verantwortlichkeiten für das Starten und Herunterfahren, aber andere Objekte erledigen die meiste Arbeit zwischen dem Start und dem Herunterfahren. Versuchen Sie also nicht, alles in den App-Delegaten zu drücken.

    
Kristopher Johnson 12.08.2010, 19:45
quelle
11

main.m enthält die main() -Funktion, die der Einstiegspunkt für das Programm ist, es wird zuerst ausgeführt. Dann ruft es UIApplicationMain() auf, was die OS-spezifischen Anwendungseinstellungen erledigt und lädt die Haupt-Interface-Builder-Datei .xib , die Ihre App-Delegierten-Instanz enthält.

Das heißt, ohne main.m würde Ihr App-Delegat nicht einmal geladen.

    
jtbandes 12.08.2010 01:14
quelle

Tags und Links