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的回答
最近我更新到 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的回答