2010-10-15 4 views
9

Comment quitter l'application Mac OS X correctement, à la fermeture de la principale (la seule)? Je connais là une méthode - (void)windowWillClose:(NSNotification *)notification en NSWindowDelegate. Mais ce n'est pas tout à fait approprié dans mon cas, car il est appelé avant queNSWindow se ferme.Quitter l'application lorsque NSWindow se ferme

Répondre

23

Vous ne pouvez pas avoir l'événement windowDidClose car la notification qui l'accompagne contient un objet non valide (la fenêtre est susceptible d'avoir été désallouée à la fermeture). Pour obtenir ce dont vous avez besoin, faites votre classe le délégué de la demande, et mettre en œuvre la méthode suivante:

- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) theApplication; 

De cette méthode, le retour YES.

Si votre objet de contrôleur possède une instance dans MainMenu.nib, établissez simplement une connexion à partir du propriétaire du fichier (ce qui signifie l'objet Application dans le fichier MainMenu.nob). Contrôle-Faites glisser le propriétaire du fichier vers votre objet et connectez la prise de délégué.

Ou dans le code source, mettez quelque chose comme ceci dans votre méthode d'initialisation de l'objet contrôleur:

[NSApp setDelegate: self]; 
+0

Merci! N'a pas remarqué cette méthode dans 'NSApplicationDelegate'. :) –

Questions connexes