35 votes

Comment puis-je dire à mon application Cocoa de quitter l'application elle-même?

Je suis à la recherche d'un bon moyen de dire mon Cacao demande d'arrêter de lui-même. Soyez assuré que ce ne sera pas utilisée pour la production de code. Je suis à la recherche d'un moyen facile pour exécuter un test, puis fermez l'application en cours de débogage.

J'ai trouvé que l' exit(0); fermer l'appli, mais il ignore tout de l'application normale procédures de sortie, et je tiens à garder tout en place.

Essentiellement, je veux des choses à travailler comme si un utilisateur a tiré "Quitter" dans le menu, mais je veux que cela se produise automatiquement après que j'ai fini avec mon test.

Mon code ressemble à ceci:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif

84voto

bbum Points 124887

Vous pouvez très bien être assuré que votre application va se faire tuer au moins de temps en temps. Ainsi, la défense contre les sorties comme d' exit(0); est requis.

Cependant, NSApplication implémente l' -terminate: méthode.

[NSApp terminate: nil]; devrais faire ce que vous voulez.

Je voudrais généralement suggèrent de les poster via -performSelector:afterDelay: avec un retard de 0,0 à forcer pour arriver au sommet de la prochaine passe par la boucle d'événements.

Exemple:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];

2voto

Matt Points 19

Il semble que [NSApp terminate: id] soit obsolète. Donc, comme l'indique @bbum, utilisez ceci:

 [NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
 

Cela fonctionne comme je m'y attendais lors de l'ajout d'un élément de menu Quitter au menu de la barre d'état d'une application LSUIElement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X