升级到XCode11以后,当你新建一个项目的时候会发现,工程中多出一个SceneDelegate,它是什么呢?做什么用的呢?看我这篇就够了~哈哈哈
一、AppDelegate和SceneDelegate
- XCode11之前,只有AppDelegate,AppDelegate的职责是处理App生命周期 + UI生命周期,在AppDelegate设置根视图控制器
- XCode11之后,有AppDelegate和SceneDelegate,AppDelegate职责是处理App生命周期 + SceneDelegate生命周期,SceneDelegate职责是UI生命周期
- (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];
}
二、删除SceneDelegate
- 1.删除SceneDelegate.swift文件
此时报错信息:error: Build input file cannot be found: '/Users/baihe/Documents/XHSWift/SwiftStudy/SwiftStudy/SwiftStudy/SceneDelegate.swift' (in target 'SwiftStudy' from project 'SwiftStudy')
- 2.info.plist文件中删除Application Scene Manifest一项
- 3.将AppDelegate.m中的UISceneSession lifecycle注释掉或者删掉。(此时就没有报错信息了)
- 4.在didFinishLaunchingWithOptions中加入UIWindow。
网友评论