当前景中的应用程序出现记忆崩溃时,该应用程序的哪一部分会委托生命周期



试图调试用户在我们的崩溃报告工具或日志文件中没有显示的崩溃。有一个理论,它可能取决于内存压力,但不确定如果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)

系统必须触发 applicationWillTerminate,如果它上升才能杀死该应用程序。但是,您不能确定应用程序实际将被杀死之前需要多少时间。也许没有足够的时间编写日志。由于内存消耗系统杀死应用程序之前,应发送记忆警告。您可以通过模拟模拟器上的内存警告来测试最后一个。如果applicationWillTerminate未调用,则需要通过系统终止,并且您崩溃与内存消耗无直接相关。

相关内容

最新更新