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

时间:2009-11-02 02:29:53

标签: cocoa debugging exit

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

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

基本上我希望工作能够像用户从菜单中选择“退出”一样,但我希望在完成测试后自动完成。

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

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

1 个答案:

答案 0 :(得分:83)

你可以放心,你的应用程序至少会在某些时候被杀死。因此,防范exit(0); 之类的退出是所必需的。

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

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

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

示例:

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