在应用程序崩溃时移动到第一个屏幕/主屏幕

时间:2017-07-12 08:37:33

标签: ios objective-c swift xcode

- (void)applicationWillTerminate:(UIApplication *)application {

  NSLog(@"Application is terminating now.");
}

当应用程序将被终止时调用此函数,我已添加此函数只是为了向我的问题添加一些代码行。在iOS中,当应用程序在某个阶段崩溃并且我们没有正确处理该情况时,它会将用户设置为移动到主屏幕(在崩溃的应用程序之外)。 在android中,我已经在大多数应用程序中看到,如果一个人没有处理崩溃的场景,它会将用户设置为移动到主屏幕。 发生崩溃时应该有任何方法可以调用,我们可以在那个阶段调用firstView。 到目前为止,我还没有找到目标c / swift中的方法/委托。 如果有人知道,你可以在这里回答。 注意:请不要建议使用

@try {

 } @catch (NSException *exception) {

} @finally {

}

正如我问的那样,我已经正确地处理了几乎所有的异常情况,但在这种情况下询问某些情况是否失败或某些其他问题,应用程序在任何设备上崩溃的解决方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以捕获导致NSSetUncaughtExceptionHandler崩溃的异常,如下所示:

func exceptionHandler(exception : NSException) {
   // Do something before the app is automatically terminated
   print(exception.callStackSymbols)
}

NSSetUncaughtExceptionHandler(exceptionHandler)

在崩溃之后和应用程序强制关闭之前,将立即调用此处理程序。 你无法阻止应用程序崩溃,但至少你可以获得调用堆栈并使用它来记录并找出发生的事情!

答案 1 :(得分:1)

你不能在ios中这样做。在应用程序终止之前调用委托applicationWillTerminate。在那里你不能避免应用程序终止。调用applicationWillTerminate后,应用程序将终止。你可以避免崩溃的唯一方法是找出问题&解决它。您可以在didRecieveMemoryWarning中捕获内存警告,并且可以捕获代码中的异常,这些异常将为您提供在崩溃之前导致崩溃的一些问题