有没有一种方法可以告诉OS X Lion对您不想自动终止的给定应用程序禁用自动终止?
如果您还不知道,FYI Lion就是一个戒烟者,如果您不希望将其用于某个特定的应用程序,那该怎么办。
如果Lion决定需要资源,并且您似乎并没有使用它们,它将在背后退出正在运行的应用程序。确定应用程序是否“正在使用”的试探法非常保守:它不能是活动的应用程序,它必须没有可见的,最小的窗口,当然,它必须明确支持自动终止。
例如,说我不希望没有打开TextEdit窗口并切换到另一个应用程序时自动退出TextEdit。
看完《Mac App编程指南》中的“自动终止”部分后,我发现我会尝试将NSSupportsAutomaticTermination键的值为No添加到TextEdit的Info.plist文件中。(无效:TextEdit在打开时崩溃。)
需要注意的是,该文件不包含NSSupportsAutomaticTermination密钥(这意味着Apple使用的是NSProcessInfo来启用自动终止),因此添加密钥可能始终无效,因为NSProcessInfo会覆盖plist文件中的内容。(通过使用修改后的Info.plist自签名TextEdit(包括NSSupportsAutomaticTermination密钥和No值),验证了此方法不起作用。
注意到的一个副作用是,在Info.plist文件中进行任何更改都会导致TextEdit在打开时崩溃。原因从崩溃日志中记录为“代码签名无效”,这意味着TextEdit应用及其所有内容均已代码签名。解决方法是使用codesign
命令和代码签名任务中所述的自签名根证书对应用程序进行自签名。
经过到目前为止的尝试,TextEdit仍然遵循自动终止。