简要说明
Xcode11新项目模版发生了一些变化,多了SceneDelegate,原因是 iOS13 引入了多窗口的支持。
结论及用法
结论
iOS 13 中由Info.plist及AppDelegate任一决定是否走新流程。
- 如果Info.plist->Application Scene Manifest 选项下启用了多窗体支持(Enable Multiple Windows = YES) 或者 有参数(Scene Configuration)则会必须走新流程。
- 如果AppDelegate中实现了
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options API_AVAILABLE(ios(13.0))
则会走新流程。 - 如果不符合上述任一条件,将保持旧的流程
一些细节
Info.plist 中相关配置如图
多窗口里。每个窗口的生命周期独立出来。不再调用AppDelegate中的生命周期变化时的方法。由单独的SceneDelegate : UIResponder <UIWindowSceneDelegate>
类的实例分别处理。