如何告诉我的Cocoa应用程序从应用程序本身退出?

e.J*_*mes 33 debugging cocoa exit

我正在寻找一种告诉我的Cocoa应用程序退出的好方法.请放心,这不会用于生产代码.我只是在寻找一种简单的方法来运行一个测试,然后在调试期间关闭应用程序.

我发现exit(0);将关闭应用程序,但它绕过了所有正常的应用程序退出程序,我想保留所有这些程序.

基本上我想让事情好像用户从菜单中拉出"退出",但我希望它在我完成测试后自动发生.

我的代码目前看起来像这样:

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

bbu*_*bum 84

您可以放心,您的应用程序至少会在某些时候被杀死.因此,防范出口等exit(0); 必需的.

但是,NSApplication实现了该-terminate:方法.

[NSApp terminate: nil]; 应该做你想做的事.

我通常会建议通过-performSelector:afterDelay:延迟0.0来发布它,以强制它发生在下一次通过事件循环的顶部.

例:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
Run Code Online (Sandbox Code Playgroud)

  • 对于那些密集的人(像我一样)并且无法正确地获得语法(我在终止后忘记了冒号),整行将显示:[NSApp performSelector:@selector(terminate :) withObject:nil afterDelay: 0.0]; (31认同)