4

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

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

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

4

2 回答 2

5

简而言之,您要么调用exit(3)并完全绕过标准的 Cocoa 拆解机制,要么您无法设置退出代码(如您所描述的那样跳过箍。

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

但是,真的,不要那样做——用户喜欢出于恶意而强制退出,并且您的应用程序应该被设计成不会因此而导致灾难性的失败。

于 2010-04-30T15:19:41.167 回答
1

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

于 2010-04-30T15:32:34.610 回答