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

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

基本上我想要的东西的工作,就好像用户从菜单拉“退出”,但我想它自动发生我与我的测试结束后。

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

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

解决方案

您几乎可以放心,您的应用程序是会得到至少杀害了一些时间。因此,防御退出等exit(0);必需的。

然而,的NSApplication实现-terminate:方法。

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

我通常建议经由-performSelector:afterDelay:与0.0的延迟,迫使它在下一次通过事件循环的顶部,以发生张贴。

示例:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top