Swift 关闭窗口后,Mac应用程序将消失,然后选择另一个应用程序

Swift 关闭窗口后,Mac应用程序将消失,然后选择另一个应用程序,swift,macos,swiftui,Swift,Macos,Swiftui,我在Xcode 11.4中创建了一个新的macOS项目,其中语言是Swift,用户界面是SwiftUI。在不对项目中的代码进行任何更改的情况下,应用程序将通过执行以下步骤从dock中消失: 通过运行Xcode项目启动Mac应用程序 关闭Mac应用程序的主窗口 选择其他正在运行的应用程序,如Safari 原来的Mac应用程序从dock中消失,无法访问 如果Mac应用程序的窗口打开,则不会发生此行为。我可以选择其他正在运行的应用程序,然后毫无问题地返回到原始Mac应用程序。这种行为称为。我觉得这是一

我在Xcode 11.4中创建了一个新的macOS项目,其中语言是Swift,用户界面是SwiftUI。在不对项目中的代码进行任何更改的情况下,应用程序将通过执行以下步骤从dock中消失:

  • 通过运行Xcode项目启动Mac应用程序
  • 关闭Mac应用程序的主窗口
  • 选择其他正在运行的应用程序,如Safari
  • 原来的Mac应用程序从dock中消失,无法访问
  • 如果Mac应用程序的窗口打开,则不会发生此行为。我可以选择其他正在运行的应用程序,然后毫无问题地返回到原始Mac应用程序。

    这种行为称为。我觉得这是一个不合适的功能,但苹果认为这是一个功能

    您的应用程序可能尚未实际退出。它可能只是看起来已经退出了。再次“发射”它只会使它重新出现在码头上。也有可能一些看起来仍在运行的应用程序实际上已被系统终止。理论上,如果您尝试切换到它们,它们将被启动并被告知恢复以前的状态,以保持它们一直在运行的错觉。实际上,应用程序(甚至是苹果的)很少能正确地将事情恢复到原来的样子

    活动监视器中的进程列表真实反映了正在运行和未实际运行的内容。查看以确定您的应用程序是否真的已被终止

    开发人员应该选择自动终止,因为它需要对状态恢复进行显式编码。但是,Xcode的应用程序项目/目标模板默认启用了它。您可以从Info.plist中删除
    NSSupportsAutomaticTermination
    键以禁用它

    同样地,如果您不准备支持突然终止,您可能也希望禁用它。您将删除
    nssupportssudentermination
    键。

    此行为称为。我觉得这是一个不合适的功能,但苹果认为这是一个功能

    您的应用程序可能尚未实际退出。它可能只是看起来已经退出了。再次“发射”它只会使它重新出现在码头上。也有可能一些看起来仍在运行的应用程序实际上已被系统终止。理论上,如果您尝试切换到它们,它们将被启动并被告知恢复以前的状态,以保持它们一直在运行的错觉。实际上,应用程序(甚至是苹果的)很少能正确地将事情恢复到原来的样子

    活动监视器中的进程列表真实反映了正在运行和未实际运行的内容。查看以确定您的应用程序是否真的已被终止

    开发人员应该选择自动终止,因为它需要对状态恢复进行显式编码。但是,Xcode的应用程序项目/目标模板默认启用了它。您可以从Info.plist中删除
    NSSupportsAutomaticTermination
    键以禁用它


    同样地,如果您不准备支持突然终止,您可能也希望禁用它。您将删除
    nssupportssudentermination
    键。

    我没有意识到这种行为。谢谢你指给我看。您有任何关于如何支持它的例子吗?在默认的Xcode项目Info.plist中,我看到“应用程序可以被终止以回收内存或其他特殊情况”。这与
    NSSupportsAutomaticTermination
    nsSupportsUserName
    相同吗?它是
    NSSupportsAutomaticTermination
    。当Info.plist编辑器处于活动状态时,启用编辑器>查看原始键和值。我没有意识到这种行为。谢谢你指给我看。您有任何关于如何支持它的例子吗?在默认的Xcode项目Info.plist中,我看到“应用程序可以被终止以回收内存或其他特殊情况”。这与
    NSSupportsAutomaticTermination
    nsSupportsUserName
    相同吗?它是
    NSSupportsAutomaticTermination
    。当Info.plist编辑器处于活动状态时,启用编辑器>原始关键帧和值以查看。