Comment puis-je dire à mon application Cocoa pour quitter à partir de l'application elle-même?
Question
Je cherche une bonne façon de dire à ma demande de cacao à se quitter. Rassurez-vous que ce ne sera pas utilisé pour le code de production. Je suis à la recherche d'un moyen facile d'exécuter un test et puis fermez l'application pendant le débogage.
J'ai trouvé que exit(0);
va fermer l'application, mais il court-circuite toutes les procédures de sortie de l'application normale, et je voudrais garder tous en place.
Essentiellement, je veux que les choses fonctionnent comme si un utilisateur a tiré « Quitter » dans le menu, mais je veux que ça se fasse automatiquement après avoir terminé avec mon test.
Mon code ressemble actuellement à ceci:
#if (SUPERFANCY_TESTING_MODE)
[self doSomething];
exit(0); // <-- I need something better to go here
#endif
La solution
Vous pouvez très bien rassurez-vous que votre application va se faire tuer au moins une partie du temps. Ainsi, la défense contre les sorties similaires des exit(0);
requis.
Cependant, NSApplication implémente la méthode -terminate:
.
[NSApp terminate: nil];
doit faire ce que vous voulez.
Je suggère généralement l'affichage via -performSelector:afterDelay:
avec un retard de 0,0 pour l'obliger à se produire au sommet de la passe suivante dans la boucle de l'événement.
Exemple:
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];