35

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

我发现这exit(0);会关闭应用程序,但它会绕过所有正常的应用程序退出程序,我希望将它们全部保留在原位。

本质上,我希望事情就像用户从菜单中拉出“退出”一样工作,但我希望它在我完成测试后自动发生。

我的代码目前如下所示:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
4

1 回答 1

86

您几乎可以放心,您的应用程序至少在某些时候会被杀死。exit(0); 因此,需要防御退出等。

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

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

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

例子:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
于 2009-11-02T02:37:08.007 回答