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

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

我发现exit(0);将关闭应用程序,但它绕过所有正常的应用程序退出程序,我想保持所有的位置。

基本上我想要的东西工作,好像一个用户从菜单中拔出“退出”,但我希望它在我完成了我的测试后自动发生。

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

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
最佳答案
你可以放心,你的应用程序将被杀死至少一些时间。因此,防御退出退出(0)的样子;是必须的。

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

[NSApp terminate:nil];应该做你想要的。

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

例:

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

转载注明原文:如何告诉我的Cocoa应用程序从应用程序本身退出? - 代码日志