XCODE 11 - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[AppDelegate window]:

XCODE 11 - Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate window]:

最近我更新到 XCODE 11 并且开始了解 SceneDelegate 和 AppDelegate 的概念。这是我在 AppDelegate 中的简单代码:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor yellowColor];
    return YES;
}

但不幸的是,它在下一行崩溃了,如图所示:

并且显示以下错误:

请帮助我解决我面临的问题。任何帮助将不胜感激。

假设您的根视图控制器的视图是透明的,这里是在场景中设置 UIWindow 背景颜色的地方:

SceneDelegate.m中修改如下回调:

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    if (scene.class == UIWindowScene.class) {
        [[(UIWindowScene *) scene windows].firstObject setBackgroundColor:UIColor.yellowColor];
    }
}

删除屏幕代理:

转到 info.plist 并删除所选条目,如下所示:

从项目中删除 ScreenDelegate.h 和 ScreenDelegate.m:

将您的 AppDelegate.h 更新为:

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow * window;

@end

最后,从 AppDelegates 中删除 Screen 委托 class:

希望对您有所帮助。

如果想使用ScreenDelegates可以参考Asperi的回答