天天看点

升级xcode7 遇到的问题 Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:]

用了xcode7以后遇到的问题,有网上找的解决方案,也有自己研究的,希望能帮助大家!

assertion failure in -[uiapplication _runwithmainscene:transitioncontext:completion:], /buildroot/library/caches/com.apple.xbs/sources/uikit/uikit-3505.16/uiapplication.m:3294

这个错误让我一度头疼不已,在网上找了很多方案都没解决,后来自己慢慢的摸索出来的,先给大家分享我自己的解决方案。

解决方案一、不能在

- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions 方法里面添加引导页代码,(本人就属于这种情况,真tm的坑爹的,苹果不说谁tm知道啊!!!),如下这段代码是添加引导页的,把这段代码注释掉就正常了。

//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,代码如下

//    [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,具体代码如下:\

- (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;