设置Cocoa应用程序的退出状态的任何好方法?

时间:2010-04-30 03:31:53

标签: objective-c cocoa nsapplication

我有一个Cocoa应用程序,它与服务器交互并显示GUI。如果发生致命错误,我会显示警告并退出。我想将退出状态设置为非零值以反映发生错误,以便与其他一些基于UNIX的工具进行交互。

不幸的是我一直无法找到一个好方法 - NSApplication似乎没有办法设置退出状态。目前,我已经将NSApplication子类化,并添加了exitStatus ivar(我在必要时在我的应用委托中设置),然后覆盖-terminate:,以便调用exit(exitStatus)。这很好用,但对我来说似乎有点蹩脚,更不用说我可能会遗漏标准terminate:在幕后做的重要事情。我无法在我的子类方法中调用[super terminate:sender],因为exit()没有给我机会设置状态。

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:5)

简而言之,你要么调用exit(3)并完全绕过标准的Cocoa拆卸机制你没有设置退出代码(没有像你描述的那样跳过箍)

正如Jason所说,在应用程序拆除期间,系统没有任何关键。另一方面,你的应用程序可能有一些关键的东西,但这完全是因为你的应用程序的实现(默认情况下在Cocoa中没有任何东西)。

但是,实际上,不要这样做 - 用户的强烈要求强行退出,并且应该将您的应用设计为不会因灾难性而失败。

答案 1 :(得分:1)

还有其他更简洁的方法可以与基于unix的工具进行交互。例如,您可以通过在文本文件中编写一些代码来模拟退出代码,工具可以从中获取它,而不会破坏您的应用程序以返回代码。也可以使用应用程序的stdout / console。