SceneDelegate有什么作用?删除有什么影响

ゝ一纸荒年。 2023-02-15 03:35 73阅读 0赞

自从Xcode11发布以来,当你使用新XCode创建一个新的iOS项目时,SceneDelegate会被默认创建,它到底有什么用呢?

在iOS 13(及以后版本)上,SceneDelegate将负责AppDelegate的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。 一个应用程序可以具有不止一个场景,而一个场景现在可以作为您应用程序的用户界面和内容的载体(背景)。

尤其是一个具有多场景的App的概念很有趣,因为它使您可以在iOS和iPadOS上构建多窗口应用程序。 例如,文档编辑器App中的每个文本文档都可以有自己的场景。 用户还可以创建场景的副本,同时运行一个应用程序的多个实例(类似多开)。

在Xcode 11中有三个地方可以明显地看到SceneDelegate的身影:
1、现在,一个新的iOS项目会自动创建一个SceneDelegate类,其中包括我们熟悉的生命周期事件,例如active,resign和disconnect。
SceneDelegate还具有下面这些函数:
1)sceneDidDisconnect(_:)当场景与app断开连接是调用(注意,以后它可能被重新连接)
2)sceneDidBecomeActive(_:)当用户开始与场景进行交互(例如从应用切换器中选择场景)时,会调用
3)sceneWillResignActive(_:)当用户停止与场景交互(例如通过切换器切换到另一个场景)时调用
4)sceneWillEnterForeground(_:)当场景变成活动窗口时调用,即从后台状态变成开始或恢复状态
5)sceneDidEnterBackground(_:)当场景进入后台时调用,即该应用已最小化但仍存活在后台中
2、AppDelegate类中多了两个与“scene sessions”相关的新方法:
1)application(_:configurationForConnecting:options:) 会返回一个创建场景时需要的UISceneConfiguration对象2)application(_:didDiscardSceneSessions:)当用户通过“应用切换器”关闭一个或多个场景时会被调用
3、Info.plist文件中提供了”Application Scene Manifest“配置项,用于配置App的场景,包括它们的场景配置名,delegate类名和storyboard

项目中SceneDelegate相关结构示例图
在这里插入图片描述
在这里插入图片描述

不习惯使用SceneDelegate可以将其删除,按原来的方式进行项目开发
删除操作:
1、SceneDelegate文件删除
2、AppDelegate文件中函数application(_:configurationForConnecting:options:)application(_:didDiscardSceneSessions:)删除
3、Info.plist文件中Application Scene Manifest删除

发表评论

表情:
评论列表 (有 0 条评论,73人围观)

还没有评论,来说两句吧...

相关阅读

    相关 volatile 什么作用

    `volatile` 是一个关键字,通常用于声明变量,`volatile` 的主要作用是告诉编译器和操作系统,该变量可能会被多个线程同时访问,因此不应该对这个变量进行优化,以确

    相关 static什么作用

    static: 当它作用于函数定义时,或者用于代码块之外的变量声明时, static关键字用于修改标示符的链接属性。外部链接属性变为内部链接属性,标识符的存储类型和作用域不

    相关 static什么作用

    面试题:static有什么作用? 答:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数  一、       定义全局静态变量 :在全局变量前面加