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;
}
这个错误让我一度头疼不已,在网上找了很多方案都没解决,用僵尸模式发现主要在于首次运行的引导页上出现问题[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;
}
相关文章推荐
- 窥探Unity5渲染内部之解析UnityShaderVariables.cginc
- 窥探Unity5渲染内部之解析UnityShaderVariables.cginc
- *LeetCode-Trapping Rain Water
- 多点触控及一个华丽的Demo
- android适配问题
- cocos动画
- 源码分析Mms--AndroidManifest.xml分析
- [IOS]如何在Storyboard中设置Round Rect Button的外边距?
- Quick-cocos2d-x3.3 Study (二十)--------- 音乐音效
- ios开始啦!
- View的触摸事件处理
- 开始iOS 7中自动布局教程(一)
- Unity中 Behavior Designer 行为树插件
- (启动H5本地存储)WebView显示网页出现Uncaught TypeError: Cannot call method 'getItem' of null异常
- jsp的四个作用域:page request session application 的区别
- android 画画
- 关于Unity3D的编辑器崩溃时的线索定位
- vs调试报错:“_ASSERTE(_CrtIsValidHeapPointer(pUserData)) ”的问题解决
- Unity:RectTransfrom瞎探索
- 基于Objective-C的面向对象编程入门