您的位置:首页 > 移动开发

Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Li

2015-09-22 07:08 543 查看
*** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3505.16/UIApplication.m:3294

这个错误让我一度头疼不已,在网上找了很多方案都没解决,用僵尸模式发现主要在于首次运行的引导页上出现问题[b],先给大家分享我自己的解决方案。[/b]

解决方案一、不能在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法里面添加引导页代码,(本人就属于这种情况,真TM的坑爹的,苹果不说谁TM知道啊!!!),如下这段代码是添加引导页的,把这段代码注释掉就正常了,
如果还需要引导页可以新建一个ViewController用来写引导页, 然后再用协议传值进行传值。

[objc] view
plaincopy

//xcode7 不能在application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions里面加载启动页,所以下面这段添加引导页的代码应该是要删除的。 切记!切记!

// if (![[NSUserDefaults standardUserDefaults]boolForKey:@"everLaunched"]) {

// myView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.window.bounds.size.width, self.window.bounds.size.height)];

// [myView setImage:[UIImage imageNamed:@"mainPage.png"]];

// [self.window.rootViewController.view addSubview:myView];

// MiIntroductionViewController *introVC=[[MiIntroductionViewController alloc]initWithNibName:@"MiIntroductionViewController" bundle:nil];

// [self.window.rootViewController presentViewController:introVC animated:NO completion:nil];

// [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"everLaunched"];

// }else{

// [self buildInstoSpecialEdition];

// }

解决方案二、新的SDK不允许在设置rootViewController之前做过于复杂的操作,导致在didFinishLaunchingWithOptions 结束后还没有设置rootViewController。(这个方案是网友提供的,但是没解决我的问题),具体做法是,先虚设一个rootViewController,代码如下

[objc] view
plaincopy

// [self.window makeKeyAndVisible];

// UIViewController* myvc = [[UIViewController alloc] initWithNibName:nil bundle:nil];

// self.window.rootViewController = myvc;

解决方案三、在Info.plist中,可以找到:“Main storyboard file base name” String “Main”,删掉这个条目, 再启动,屏幕变成了黑屏,然后手动添加window,具体代码如下:

[objc] view
plaincopy

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

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

self.window.backgroundColor = [UIColor whiteColor]; //白色背景

[self.window makeKeyAndVisible]; //

return YES;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: