楼主是在十一前提交最新版本的app到AppStore。假期归来满心欢喜以为上架了,于是打开iTunes Connect,打开一看,被拒绝了。尼玛,这是第二次被拒绝了。
楼主不敢轻易提交代码了,就认真的把代码review一遍,也没发现什么问题。打开崩溃日志发现如下错误报告:
*** Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:],/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3505.16/UIApplication.m:3294
下面是apple给出的崩溃分析建议:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application windows are expected to have a root view controller at the end of application launch'
terminating with uncaught exception of type NSException
abort() called
一般来说apple给出的建议,应该就是崩溃的主要原因,这句话的大致意思就是:在运行app时捕捉到了NSInternalInconsistencyException异常,给出原因就是:在app启动将要结束的时候,应用必须要有一个rootViewController。也就是说我们在进行设置rootViewController之前,不能进行过于复杂的操作,比如设置引导页。
楼主的解决办法:
self.window = [[UIWindow alloc] init];
[self.window setFrame:[[UIScreen mainScreen] bounds]];
UIViewController *showDetailDescripVC = [[UIViewController alloc] init];
self.window.rootViewController = showDetailDescripVC;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
// Added Introduction View Controller
BOOL login = [NSVerify_Tool unArchiveIsFirstLoginApp];
if (!login) {
/**
* 引导页
*/
NSArray *coverImageNames = @[@"loading1", @"loading2", @"loading3"];
self.introductionView = [[ZWIntroductionViewController alloc] initWithCoverImageNames:coverImageNames backgroundImageNames:nil];
[showDetailDescripVC.view addSubview:self.introductionView.view];
__weak AppDelegate *weakSelf = self;
self.introductionView.didSelectedEnter = ^() {
[NSVerify_Tool archiveIsFirstLoginApp:YES];
LFMainViewController *contentVC = [[LFMainViewController alloc] init];
UINavigationController *naviVC = [[UINavigationController alloc] initWithRootViewController:contentVC];
weakSelf.window.rootViewController = naviVC;
};
}
else
{
//不是第一次使用该app,设置rootViewController = mainViewController
}