Apple官方文档中的“scene support”具体指什么?与实际默认配置是否存在冲突?
iOS Scene 支持文档表述歧义说明
苹果官方文档对Scene功能的描述如下:
Scene support是一项需要主动启用的功能
应用必须明确选择启用scenes,你可以通过更新应用的配置设置完成该操作
在iOS 12及更早版本中,以及不支持scenes的应用中,UIKit会将所有生命周期事件发送至UIApplicationDelegate对象
实际开发中观察到的冲突现象是Xcode默认配置逻辑和文档表述的歧义导致的,真实规则如下:
- 从Xcode 11开始,所有新建的iOS项目默认已经自动开启了单Scene支持,默认会生成
SceneDelegate模板代码、在Info.plist中自动添加Application Scene Manifest配置,所以无需手动操作就会走SceneDelegate的生命周期回调,和实际测试现象一致 - 文档中提到的「需要主动启用Scene支持」实际指向两个场景:
- 从适配iOS12及更低版本的旧项目升级,要切换到Scene架构才需要手动完成添加配置、新增SceneDelegate等操作
- 需要支持多窗口(多Scene)能力时,需要主动在项目配置中开启多Scene开关,默认新建项目的多Scene能力是关闭的
- 若不需要使用Scene架构,反而需要主动操作:删除
SceneDelegate文件、删除Info.plist中的Application Scene Manifest条目、移除AppDelegate中UISceneSession相关的代理方法,手动给AppDelegate的window属性赋值后,生命周期才会回调到AppDelegate,和iOS12及之前的逻辑一致
你提到的文档表述调整建议是合理的,原文中的「Scene support」如果明确为「多Scene support」或者补充默认配置的说明,会更符合实际开发逻辑。
内容的提问来源于stack exchange,提问作者ctrl freak
相关产品推荐
相关产品推荐

