ios - 当前台应用程序发生内存不足崩溃时,调用 App Delegate 生命周期的哪一部分?

标签 ios iphone swift memory-management memory-leaks

尝试调试用户遇到的崩溃,但并未显示在我们的崩溃报告工具或日志文件中。有一种理论可能是由于内存压力,但不确定如果 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/

相关文章:

ios - 数据未在 View Controller Swift 之间传输

ios - 创建像 iOS 日历一样的 TableView

ios - 如果用户关闭或忽略第一个通知,如何重复本地通知?

iphone - 如何在 UITableView 中为节标题的高度变化设置动画?

swift - 如何按搜索词过滤短语数组

ios - 类型 'Custom TableViewController' 不符合协议(protocol) 'UICollectionViewDataSource'

ios - 我的应用程序二进制文件在 Xcode 中的哪里提交?

ios - 修改启动屏幕 Storyboard

iphone - iOS 开发者访问/Apps/文件夹

ios - 应该自动旋转到界面方向 : never called