当前位置: 首页 > 面试题库 >

SceneDelegate和AppDelegate之间的区别

长孙智刚
2023-03-14
问题内容

在我的SwiftUI项目中,我同时看到AppDelegate文件和SceneDelegate文件。

它们之间有什么区别?

例如,在 SceneDelegate

scene(_:willConnectTo:options:)

并在 AppDelegate

application(_:didFinishLaunchingWithOptions:)

问题答案:

这两个文件旨在按整体运行应用程序所需的内容以及将支持在后台运行的一个“实例”所需的内容进行拆分。这将类似于一次配置数据库,但按窗口显示不同的值集。

您可以将它们视为全局和私有版本。一个是共享的,另一个则限于个人所有者。在某种程度上,它们正是您所期望的名称。

多窗口支持正在发生

下次创建新的Xcode项目时,您将看到AppDelegate分为两部分:AppDelegate.swift和SceneDelegate.swift。这是iPadOS附带的新的多窗口支持的结果,可以有效地将应用程序委托的工作一分为二。

从iOS 13开始,您的应用程序委托应:

  1. 设置应用程序运行期间所需的所有数据。
  2. 响应所有与应用有关的事件,例如与您共享文件。
  3. 注册外部服务,例如推送通知。
  4. 配置您的初始场景。

相比之下,场景委托在那里处理应用程序用户界面的一个实例。因此,如果用户创建了两个显示您的应用程序的窗口,则您将拥有两个场景,这两个场景均由同一个应用程序委托支持。

请记住,这些场景旨在相互独立地工作。因此,您的应用程序不再移至后台,而是将各个场景移至后台–用户可以将一个移至后台,同时保持另一个打开状态。

https://www.hackingwithswift.com/articles/193/whats-new-in-
ios-13提供



 类似资料:
  • 问题内容: 我需要支持iOS 12和iOS 13。 我应该在和之间复制代码吗? 例如: 和 如果我不这样做,则在1个版本中,我最终会出现黑屏,但是如果我这样做并以的方式打印,则可以看到它被称为两次。 我进行了更新,可以看到它仍然被调用了两次。 问题答案: 您确实需要复制代码,但需要确保它仅在正确的系统上运行。在iOS 13中,您不希望该应用程序委托主体代码运行,因此请使用可用性检查来阻止它。以相同

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 问题内容: 有人可以解释一下 和 我不知道“确切”的含义 问题答案: 在这个例子中,什么都没有。当您具有多个具有相似名称的路径时,该参数将起作用: 例如,假设我们有一个显示用户列表的组件。我们还有一个用于创建用户的组件。的网址应嵌套在下。因此,我们的设置可能如下所示: 现在,这里的问题是,当我们转到路由器时,将通过所有定义的路由,并返回它找到的第一个匹配项。因此,在这种情况下,它将首先找到路线,然

  • 问题内容: 我很好奇printStackTrace()和toString()之间的区别是什么。乍一看,他们 似乎 做的完全相同。 码: 问题答案: 不,有重要区别!使用toString,您只有异常的类型和错误消息。使用printStackTrace()可以获得异常的整个堆栈跟踪,这对于调试非常有帮助。 System.out.println(toString())的示例: printStackTra