【问题标题】:application:didFinishLaunchingWithOptions: method getting called on app crash应用程序:didFinishLaunchingWithOptions:在应用程序崩溃时调用方法
【发布时间】:2017-06-28 12:41:00
【问题描述】:

请有人给我解决方案如何解决这个问题?

不知道为什么

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法在应用程序崩溃时被调用(我自己创建了崩溃来观察这个问题,我可以修复这个崩溃)。 我通过显示UILocalNotification 和NSUserDefaults 对其进行了测试。

问题其实是在iPhone 6 with iOS 9.3.2上观察到的, 但是iPhone 5C with iOS 10.0.2 一切正常(application:didFinishLaunchingWithOptions: 方法不会在应用崩溃时被调用)。

项目写在Objective C。

要观察这个问题,应该是真正的崩溃,而不是让应用进入background/inactive 状态并由用户向上滑动。

【问题讨论】:

  • 在该函数中放置一个断点,然后发布该断点被命中时的堆栈跟踪屏幕截图。

标签: ios objective-c swift


【解决方案1】:

在应用程序中添加以下行:didFinishLaunchingWithOptions: 方法。

NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

然后,在您的 appDelegate 中添加以下代码以获取异常原因:

void uncaughtExceptionHandler(NSException *exception) {
  NSLog(@"Exception : %@", exception);
  NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
  // Internal error reporting
}

【讨论】:

  • 这样的快速等价物是什么?
  • NSSetUncaughtExceptionHandler { 中的异常 }
  • 谢谢,但是 void uncaughtExceptionHandler 部分呢?
  • @FeleciaGenet 你可以找到类似的 swift stackoverflow.com/a/55997459/3236890
【解决方案2】:

单击项目目标,将部署目标更改为 9.3

【讨论】:

  • 部署目标 9.3 仍然涵盖 iOS 9.3.2。但我为什么要改变它?也许还有其他问题
  • 崩溃是我自己为了观察application:didFinishLaunchingWithOptions:的奇怪调用而创建的。 ExceptionBreakpoint 在这里有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
相关资源
最近更新 更多