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

Posted

技术标签:

【中文标题】XCODE 11 - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[AppDelegate 窗口]:【英文标题】:XCODE 11 - Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate window]: 【发布时间】:2020-04-23 07:00:41 【问题描述】:

最近我更新到 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;

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

它显示以下错误:

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

【问题讨论】:

您可以根据需要删除屏幕代理。如果您需要步骤,请告诉我。 请告诉双方.. 删除场景延迟并解决此错误 【参考方案1】:

删除屏幕代理:

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

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

将您的 AppDelegate.h 更新为:

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow * window;

@end

最后,从 AppDelegates 类中移除 Screen 委托:

希望对您有所帮助。

如果你想使用 ScreenDelegates,你可以参考 Asperi 的答案

【讨论】:

【参考方案2】:

假设你的根视图控制器的视图是透明的,这里是在你的场景中设置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];
    

【讨论】:

非常感谢...我可以在这段代码中设置 homeindicator 的背景颜色吗?如果是,请也帮助我,我会投票并接受.. @FionaShoff,不,你不能......而且,顺便说一句,这与主题问题异常有何关系? ;) 其实我也想让主页指示器的背景颜色透明..我只想显示主页指示器线而没有任何背景颜色..

以上是关于XCODE 11 - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[AppDelegate 窗口]:的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常“NSInvalidArgumentException”,我的 Xcode 应用程序在尝试实现 NSFetchedResultsController 后崩溃

请向我解释错误的性质:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序

XCode 错误:未捕获的异常“NSInternalInconsistencyException”

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无效的产品标识符:(null)”

以 NSException 类型的未捕获异常终止 - Xcode

由于未捕获的异常“FirebaseShutdown”而终止应用程序,原因:“Firebase 错误