Geeks With Blogs
Step-by-Step into the cloud a blog of Dirk Eisenberg (>)
Puh, es ist geschafft - Mein erster Computer von Apple ist da. Wie es sich für einen Software-Menschen gehört wurde natürlich gleich XCode installiert um die Fähigkeiten des Cocoa Frameworks und Objective-C auszuloten. In diesem Post möchte ich die Lösung eines Problems beschreiben welches ich erst nach einigem Suchen lösen konnte.

Was ist das Problem?
Jede Applikation im Cocoa Framework arbeitet mit einem NSApplication-Objekt (für die MFC Coder eine Art CWinApp). Jetzt möchte ich als Programmierer während der Initialisierungsphase meiner Applikation Code zur Ausführung bringen. Das ist ganz nützlich um Variable oder ähnliches anzulegen.

Klar wenn man MFC kennt, oder?
Klar dachte ich mir, da ich sowas in MFC-Applikationen schon oft erledigt habe. Einfach das CWinApp-Objekt abgeleitet und in InitInstance meine Sachen erledigt, wäre da nicht die Apple Dokumentation.

Delegates
In der Dokumentation zu NSApplication kann man nachlesen das es sehr gute Gründe geben muss um diese Klasse abzuleiten da hierzu auch einige Funktionen des Frameworks verändert werden müssen. So einfache Dinge wie Variablen initialisieren soll man doch lieber über ein NSApp-Delegate lösen. Gesagt getan und gleich mal etwas über Delegates nachgelesen um auf das nächste Problem zu treffen. Wie bekomme ich die setDelegate-Methode mit meinem Objekt als Parameter so früh ausgeführt?

Die Lösung
Nach langem Suchen und Probieren ist die Lösung doch denkbar einfach. Der Interface-Designer hält eine Objekt mit dem Namen First-Responder. Zusätzlich legt man sich ein Objekt seiner Klasse die als NSApp-Delegate funktionieren soll an. Diese beiden Objekte kann man jetzt in Beziehung setzen (ctrl + Mouse) und erzeugt somit ein Delegate von NSApplication. Über den Aufruf [NSApp->delegate myMessage.....] lässt sich mit dem Objekte auch kommunizieren. Natürlich werden alle Delegate-Nachrichten die Implementiert sind auch vom Framework aus angesprochen. Posted on Sunday, November 11, 2007 12:37 PM Apple Mac OS X | Back to top


Comments on this post: NSApp delegate

No comments posted yet.
Your comment:
 (will show your gravatar)


Copyright © Dirk Eisenberg | Powered by: GeeksWithBlogs.net