Mac Catalyst - 阻止场景创建或创建不可见的 window

Mac Catalyst - prevent scene creation or create with invisible window

我有 Mac Catalyst 应用程序,具有 2 种不同的场景配置。我希望应用程序始终仅从默认场景开始;如果需要,另一个将由代码创建。问题是会话恢复系统会自动恢复以前会话的场景,即使我不想这样做。有没有办法防止场景自动重新创建?

我知道我可以直接从 SceneDelegate 的 scene(willConnectTo: ...) 调用 UIApplication.shared.requestSceneSessionDestruction()。然而,以这种方式,场景首先被完全创建,然后才被销毁,这导致可见的空 window 的“闪光”。是否可以防止这种闪光?至少创建一个不可见的window,以便在场景销毁之前创建但不显示的场景?

我通过在 AppDelegate

的 application(didFinishLaunchingWithOptions: ... ) 中设置这个 UserDefault 键 NSQuitAlwaysKeepsWindows 解决了这个问题
UserDefaults.standard.set(false, forKey: "NSQuitAlwaysKeepsWindows")

这会强制场景在退出应用程序时始终关闭,因此在启动时,没有可恢复的场景。