【问题标题】:OS X - App doesn't show up in force quit. How do I fix that?OS X - 应用程序没有出现强制退出。我该如何解决?
【发布时间】:2009-09-01 07:50:53
【问题描述】:

我正在编写一个 Cocoa 应用程序,它将自身安装为菜单栏中的 menulet(例如,音量或电池图标)。当程序崩溃时,无法使用 Force-Quit 对话框,因为它不会显示在列表中。当然,我仍然可以使用命令行来杀死它,但我的用户不知道该怎么做。有什么办法可以解决这个问题,比如让程序出现在 Force-Quit 对话框中?

(注意:该应用仅适用于 Leopard)。

【问题讨论】:

    标签: cocoa macos


    【解决方案1】:

    说实话,正确的解决方案是确保您的应用永远不会为用户挂起或崩溃。这应该是您的第一要务,而不是弄清楚如何让用户处理崩溃和挂起。显然,确保您的应用永远不会以这些方式中断并不总是可能的,但这绝对应该是例外而不是规则。

    另一方面,MenuExtras 是一个私有 API,我希望您不要使用它来创建您的“menulet”。相反,公共类 NSStatusItem(Cocoa 的一部分)是 Apple 认可的、推荐的将图标安装到菜单栏中的方法。

    【讨论】:

    • 这就是我想说的。我不想使用可能会挂起的 menulet 应用程序。
    【解决方案2】:

    不是一个真正的答案,但希望仍然有用......

    我认为大多数知道如何强制退出的人也知道他们可以在活动监视器中杀死一个进程。只要确保它没有被命名为“93AZkZ”之类的。

    【讨论】:

    • 不过,他们不需要知道如何强制退出就可以解决问题。 “在我安装了你的应用程序后,我的笔记本电脑开始变热了!” [因为它以 100% 的 CPU 运行]
    • 实际上,我问这个问题正是因为我的一些用户知道如何使用活动监视器,但确实知道强制退出! (嘿,我只是在这里工作。:-)
    【解决方案3】:

    您可以为您的应用程序提供一个 PreferencePane,它可以向它发送正确的信号,如果您想让用户以一种简单的方式将其关闭或重新启动它。这是 MySQL 在 OS X 上使用的模式。

    【讨论】:

    • 嗯。对于位于菜单栏中的轻量级程序来说,这是很多开销......但如果没有其他事情发生,也许这就是我必须做的。或者我想我可以让它防撞。
    • 这与轻量级无关。它是“我必须提供哪些选择才能访问(大部分)不露面的过程?”。除了告诉您的用户转到活动监视器或使用ps,您无能为力。仪表板小部件怎么样?
    • 很公平。如果问题继续困扰人们,我可能不得不采用其中一种解决方案。感谢您的洞察力。 :-)
    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2016-03-11
    相关资源
    最近更新 更多