app 启动不了 ,停在启动界面 [UIApplication _runWithMainScene:transitionContext:completion:]

最近遇到一个很奇怪 的问题 就是app停在启动页就崩溃掉,并且报报Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3600.9.1/UIApplication.m:3677    ===>Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application windows are expected to have a root view controller at the end of application launch'  

大概崩溃原因是没有设置程序需要的rootViewController  ,但是 AppDelegate 中确实是设置了,而且- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

self.window.backgroundColor = [ UIColor whiteColor];

if (UserModel.token.length) {

UserModel.userName = [[NSUserDefaults standardUserDefaults] valueForKey:@"userName"];

MainViewController *mainVC = [[ MainViewController alloc]init];

self.window.rootViewController  = mainVC;

}else{

LoginVC *loginVC = [[ LoginVC alloc]init];

self.window.rootViewController  = loginVC;

}

[self.window makeKeyAndVisible];

return Yes;

}

在网上搜了好多资料 发现都是关于rootviewcontroller的设置的问题,但是始终没有找到根源,还有的说是代码太多,didFinishLaunchingWithOptions
方法走完了rootViewcontroller还没设置成功,但是能打印出rootViewController的。

后来终于找到原因,在用户第一次启动时需要弹框,用到了一个自己写的一个弹框类,在显示弹框的时候把 自定义的View 添加到了一个新的window对象上面,并把该window设置为要显示的window,makeKeyAndVisible;造成启动时找不到rootViewController。

注意:不要在程序启动的时候设置新的window

为后续遇到此类问题的朋友提供一种解决问题的思路,也请对该问题有独到见解的朋友一同探讨。

你可能感兴趣的:(app 启动不了 ,停在启动界面 [UIApplication _runWithMainScene:transitionContext:completion:])