2010-06-08 7 views
1

Je viens d'un fond de développement iPhone OS. J'essaie maintenant d'écrire des applications pour OSX, mais je ne comprends pas où le cacao sur OSX décide où le programme obtient le contrôle.De l'iPhone OS au cacao sur OSX

Je peux voir la fonction principale, mais où va le contrôle de programme à partir de là? Dites par exemple que je veux créer par programme une fenêtre avec un NSView une fois que l'application a fini de lancer - comment je ferais cela? Il n'y a pas de délégué d'application créé que je puisse voir, dans iPhone OS, j'attendrais que la méthode -(void) applicationDidFinishLaunching:(UIApplication *)application soit appelée. Je ne veux vraiment pas utiliser les fichiers Interface Builder ou NIB pour configurer ma fenêtre/vue. Comment pourrais-je m'y prendre?

+0

Comment avez-vous créé votre projet? Je viens de créer un nouveau projet dans Xcode et il est venu avec deux fichiers ' AppDelegate.h/m' avec la fonction' (void) applicationDidFinishLaunching: (NSNotification *) aNotification' stubbed – catsby

+0

Aaron Hillegas est votre ami .... – KevinDTimm

+2

Pas L'utilisation d'un fichier nib est beaucoup plus compliquée. –

Répondre

1

C'est à peu près la même chose que l'iPhone. Dans votre classe de contrôleur d'application, remplacez la méthode de délégué applicationDidFinishLaunching de NSApplication. Si vous avez utilisé le modèle de projet Xcode standard, votre contrôleur d'application est déjà instancié dans votre Interface Builder MainMenu.xib et défini comme délégué de l'application; Sinon, vous devrez le faire glisser et configurer vous-même ces connexions. Plus généralement, une application OS X commence sa vie dans la méthode principale, où Cocoa configure automatiquement la boucle d'exécution de votre application et charge le fichier .xib que vous spécifiez dans Info.plist. Ce xib est généralement l'endroit où votre contrôleur d'application est instancié. En surchargeant l'une des méthodes telles que +initialize, -applicationWillFinishLaunching ou -applicationDidFinishLaunching (qui ont toutes des comportements subtilement différents), vous pouvez charger des contrôleurs et des pointes supplémentaires avec des objets qui interagissent avec la boucle d'exécution à une date ultérieure, afin que vous puissiez continuer à exécuter du code. après que votre méthode de lancement est terminée.