关闭窗口然后选择另一个应用程序时Mac应用程序消失
Posted
技术标签:
【中文标题】关闭窗口然后选择另一个应用程序时Mac应用程序消失【英文标题】:Mac app disappears when window is closed then another app is selected 【发布时间】:2020-07-13 22:05:32 【问题描述】:我在 Xcode 11.4 中创建了一个新的 macOS 项目,其中语言是 Swift,用户界面是 SwiftUI。在不对项目中的代码进行任何更改的情况下,通过执行以下步骤,该应用将从 Dock 中消失:
-
通过运行 Xcode 项目启动 Mac 应用程序
关闭 Mac 应用程序的主窗口
选择另一个正在运行的应用程序,例如 Safari
原始 Mac 应用程序从 Dock 中消失,无法访问它
如果 Mac 应用程序的窗口打开,则不会发生此行为。我可以选择其他正在运行的应用程序,然后毫无问题地返回到原来的 Mac 应用程序。
【问题讨论】:
【参考方案1】:这种行为称为Automatic Termination。我发现它是一个错误功能,但 Apple 认为它是一个功能。
您的应用可能并未真正退出。它可能只是看起来已经退出了。再次“启动”它只会让它重新出现在 Dock 中。也有可能一些看起来仍在运行的应用程序实际上已被系统终止。从理论上讲,如果您尝试切换到它们,它们将被启动并被告知恢复之前的状态,以保持它们一直在运行的错觉。在实践中,应用程序(甚至是 Apple 的)很少能正确地将事物恢复到原来的样子。
活动监视器中的进程列表真实反映了实际运行和未运行的内容。查看那里以确定您的应用是否真的被终止了。
开发人员应该选择加入自动终止,因为它需要对状态恢复进行显式编码。但是,Xcode 的应用程序项目/目标模板默认启用它。您可以从 Info.plist 中删除 NSSupportsAutomaticTermination
键以禁用它。
同样,如果您不准备支持它,您可能也想禁用突然终止。您将删除 NSSupportsSuddenTermination
键。
【讨论】:
我不知道这种行为。谢谢你向我指出。你有任何关于如何支持它的例子吗? 在默认的 Xcode 项目 Info.plist 中,我看到“应用程序可以被杀死以回收内存或其他特殊情况”。这和NSSupportsAutomaticTermination
或NSSupportsSuddenTermination
一样吗?
它是NSSupportsAutomaticTermination
。当 Info.plist 编辑器处于活动状态时,启用 Editor > Raw Keys & Values 即可查看。以上是关于关闭窗口然后选择另一个应用程序时Mac应用程序消失的主要内容,如果未能解决你的问题,请参考以下文章