Ios 这个概念不清楚

Ios 这个概念不清楚,ios,swift,iphone,uiscenedelegate,uiscene,Ios,Swift,Iphone,Uiscenedelegate,Uiscene,在使用AppDelegate之前,我们先创建UIWindow,然后为该窗口设置rootViewController。有时,当我们需要自定义警报时,我们可以在上面创建一个新的ui窗口 现在,Xcode自动创建UIScene,并基于此场景创建UIWindow。如果有人能详细解释如何在现实生活中使用这些场景,以及在AppDelegate 因为这并不能解释太多最大的问题是场景设置了多窗口支持(目前仅在iPadOS和macOS上可用)。它对于iOS上的SwiftUI设置也很有用 SceneDelegate

在使用
AppDelegate
之前,我们先创建
UIWindow
,然后为该
窗口设置
rootViewController
。有时,当我们需要自定义警报时,我们可以在上面创建一个新的
ui窗口

现在,Xcode自动创建
UIScene
,并基于此场景创建
UIWindow
。如果有人能详细解释如何在现实生活中使用这些场景,以及在
AppDelegate


因为这并不能解释太多

最大的问题是场景设置了多窗口支持(目前仅在iPadOS和macOS上可用)。它对于iOS上的SwiftUI设置也很有用

SceneDelegate控制屏幕上显示的内容“以管理应用程序用户界面的一个实例中的生命周期事件”,而AppDelegate控制整个应用程序生命周期

您还会注意到,iOS不再存在
keyWindow
。iOS很可能会支持多窗口,但这只是猜测

希望这能澄清一些事情,让你了解苹果为什么要更新这个实现

本文提供了有关SceneDelegate的更多数据,您可能会发现这些数据很有用:

文件 您应该阅读苹果公司的文档,而不是
UIScene
文档


解释 正如它所说的:

场景中,同时管理应用程序UI的多个实例,并将资源定向到相应的UI实例

在iOS 13之前,我们只有一个场景,所以我们唯一需要同时运行
ViewController
s的就是多个
Window
s。但是现在,每个应用程序可以同时运行多个实例每个场景都有自己的状态,它可能在前景中,而其他场景在背景中或被挂起,而
窗口
完全取决于应用程序本身

假设我们有两个视图控制器(假设没有场景)在设备的左右两侧运行,然后我们需要显示一个横幅。使用旧窗口方法将在两个窗口上显示横幅!如果您需要选择一个控制器,您可能最终会找到正确的控制器并在其上显示横幅(我认为我们所有人在熟悉
UIWindow
之前都使用了这种方法)

因此,苹果公司推出了
Scene
,这是一个用于该应用程序每个单独实例的容器。因此,您可以单独管理每个应用程序,并且每个应用程序都像一个单独的应用程序。它有自己的
窗口
s和
控制器
s。但它们都由一个对象管理,
UIApplication.shared
,它有一个
委托
来处理一般事件(通常来自应用程序外部)和整个应用程序生命周期



您的文章word链接到了
UIScene
文档,但我建议您阅读,等等。主要的好处是什么?应用程序的多个UI实例=例如多个窗口。谢谢你+1,这是一篇很好的文章,特别是关于NSSerActivity restoration的有趣文章。但是我开始了一个悬赏,所以我希望答案将包含更多的信息和示例,以及更多的描述(因为不是每个人都想读一篇长文章)。所以如果没有人给出这个好答案,我会给你赏金