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

StackOverflow https://stackoverflow.com/questions/1659177

  •  11-09-2019
  •  | 
  •  

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
Était-ce utile?

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];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top