尝试调试用户遇到的崩溃,但并未显示在我们的崩溃报告工具或日志文件中。有一种理论可能是由于内存压力,但不确定如果 iOS 在前台终止应用程序,是否会调用 applicationWillTerminate
。我们在 applicationWillTerminate
中写入我们的日志文件,但显然在这次崩溃期间没有调用它。
最佳答案
如果应用程序崩溃,则不会可靠地调用任何生命周期方法。相反,您可以创建并注册一个在这种情况下被调用的全局异常处理程序:
func exceptionHandler(exception: NSException) {
print("*** UNHANDLED EXCEPTION ***")
print(exception)
print("CALL STACK:")
print(exception.callStackSymbols.joined(separator: "\n"))
}
使用 NSSetUncaughtExceptionHandler
注册这个函数,例如在你的 UIApplicationDelegate.application:didFinishLaunchingWithOptions:
:
NSSetUncaughtExceptionHandler(exceptionHandler)
关于ios - 当前台应用程序发生内存不足崩溃时,调用 App Delegate 生命周期的哪一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48830555/