Xcode更新到11以后,新建项目,系统新增了一个SceneDelegate文件。
在ios13之前,APP的生命周期和UI生命周期是由Appdelegate全权负责的。
ios13之前
在ios13之后,这种状况发生了改变。
Appdelegate的职责是:
1、处理App生命周期
2、新的Scene Session生命周期
SceneDelegate的职责是:
1、处理UI生命周期
对于使用Xcode11创建新项目的开发者。初始化window方法需要作出改变。
不在Appdelegate的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions进行初始化,而转交给SceneDelegate的willConnectToSession:方法进行根控制器设置:
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
UIWindowScene *windowScene = (UIWindowScene *)scene;
self.window = [[UIWindow alloc] initWithWindowScene:windowScene];
self.window.frame = windowScene.coordinateSpace.bounds;
self.window.rootViewController = [UITabBarController new];
[self.window makeKeyAndVisible];
}
而对于需要适配ios13以下的设备,可以把相关的scenedelegate删掉。
1、删除 SceneDelegate 类文件 图12、删除info.plist中相关键值
图2
3、还原appdelegte中的window属性
图34、删除appdelegate 中 scene 相关方法
图4综上,可以继续用原来的方式创建UI执行代码了。
网友评论