我正在寻找一种告诉我的Cocoa应用程序退出的好方法。请放心,这不会用于生产代码。我只是想找一种简单的方法来运行一个测试,然后在调试期间关闭应用程序。
我发现exit(0);
会关闭应用,但它会绕过所有正常的应用程序退出程序,我想保留所有这些程序。
基本上我希望工作能够像用户从菜单中选择“退出”一样,但我希望在完成测试后自动完成。
我的代码目前看起来像这样:
#if (SUPERFANCY_TESTING_MODE)
[self doSomething];
exit(0); // <-- I need something better to go here
#endif
答案 0 :(得分:83)
你可以放心,你的应用程序至少会在某些时候被杀死。因此,防范exit(0);
之类的退出是所必需的。
但是,NSApplication实现了-terminate:
方法。
[NSApp terminate: nil];
应该做你想做的事。
我通常会建议通过-performSelector:afterDelay:
发布它,延迟为0.0,以强制它在下一次通过事件循环的顶部发生。
示例:
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];