【发布时间】:2009-09-01 07:50:53
【问题描述】:
我正在编写一个 Cocoa 应用程序,它将自身安装为菜单栏中的 menulet(例如,音量或电池图标)。当程序崩溃时,无法使用 Force-Quit 对话框,因为它不会显示在列表中。当然,我仍然可以使用命令行来杀死它,但我的用户不知道该怎么做。有什么办法可以解决这个问题,比如让程序出现在 Force-Quit 对话框中?
(注意:该应用仅适用于 Leopard)。
【问题讨论】:
我正在编写一个 Cocoa 应用程序,它将自身安装为菜单栏中的 menulet(例如,音量或电池图标)。当程序崩溃时,无法使用 Force-Quit 对话框,因为它不会显示在列表中。当然,我仍然可以使用命令行来杀死它,但我的用户不知道该怎么做。有什么办法可以解决这个问题,比如让程序出现在 Force-Quit 对话框中?
(注意:该应用仅适用于 Leopard)。
【问题讨论】:
说实话,正确的解决方案是确保您的应用永远不会为用户挂起或崩溃。这应该是您的第一要务,而不是弄清楚如何让用户处理崩溃和挂起。显然,确保您的应用永远不会以这些方式中断并不总是可能的,但这绝对应该是例外而不是规则。
另一方面,MenuExtras 是一个私有 API,我希望您不要使用它来创建您的“menulet”。相反,公共类 NSStatusItem(Cocoa 的一部分)是 Apple 认可的、推荐的将图标安装到菜单栏中的方法。
【讨论】:
不是一个真正的答案,但希望仍然有用......
我认为大多数知道如何强制退出的人也知道他们可以在活动监视器中杀死一个进程。只要确保它没有被命名为“93AZkZ”之类的。
【讨论】:
您可以为您的应用程序提供一个 PreferencePane,它可以向它发送正确的信号,如果您想让用户以一种简单的方式将其关闭或重新启动它。这是 MySQL 在 OS X 上使用的模式。
【讨论】:
ps,您无能为力。仪表板小部件怎么样?