2017-07-12 158 views
2
- (void)applicationWillTerminate:(UIApplication *)application { 

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

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

@try { 

} @catch (NSException *exception) { 

} @finally { 

} 

为我所要求的,我有处理几乎所有的例外情形正常,但询问的情况下,如果某些情况下出现故障或一些其他问题的应用意识在任何设备上崩溃什么是解决方法?

回答

2

您可以捕捉异常导致崩溃与NSSetUncaughtExceptionHandler像这样前导致崩溃的问题:

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

NSSetUncaughtExceptionHandler(exceptionHandler) 

这处理程序将在崩溃之后以及应用程序强制关闭之前调用。 您将无法停止应用程序崩溃,但至少您可以获取调用堆栈并将其用于日志记录并找出发生的事情!

+0

现在这很有趣。这给出了例外的原因,并感谢答复,但仍然在等待一种可以阻止应用程序崩溃的答案。 –

+0

巴厘岛提到,不可能阻止应用程序崩溃。当一个未处理的异常被引发时,系统会接管并让你别无选择,除了看它崩溃。 – Thomas

+0

是的,我已经搜查了很多,最后现在我不得不接受你的答案,因为我发现迄今没有解决方法。 –

1

你不能这样做在ios中。在应用程序终止之前调用代理applicationWillTerminate。你不能避免应用程序终止。一旦调用applicationWillTerminate,应用程序将终止。您可以避免崩溃的唯一方法是找出问题&解决它。你能赶上内存警告在didRecieveMemoryWarning,您可以看看在代码中的异常,这将给你一些的那个崩溃

+0

是的,我知道。我添加这个只是为了在我的问题中添加一些代码。我问是否有任何工作? –

+0

不幸的是,除了解决崩溃问题之外,你无法避免这种情况。 – Bali

+0

是的,你是对的。 –

相关问题