从通知中心启动应用程序时出现奇怪的崩溃

时间:2014-10-14 22:27:31

标签: ios objective-c ios8-today-widget

我在我的智慧结束时,我得到了一个奇怪的崩溃,只有当应用程序从通知中心启动时才会发生。点击本地通知(在通知方面)或调用extensionContext:openURL:completionHandler(来自my Today小部件)将使用customURL方案启动应用程序。

当应用程序运行时(热启动),没有任何问题,就像宣传的一样。当我杀死应用程序(在任务切换器中)然后尝试通过通知中心(冷启动)启动它时,我收到以下崩溃报告。

我搜索低和高的任何东西,找不到它。这只发生在iOS8设备上,iOS7设备没有问题(通知启动,显然没有今日小部件)

有没有人见过这个?

谢谢!

Date/Time:           2014-10-14 18:16:39.924 -0400
Launch Time:         2014-10-14 18:16:38.667 -0400
OS Version:          iOS 8.0.2 (12A405)
Report Version:      105

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000016a4cbeb8
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x0000000195ebbbd0 objc_msgSend + 16
1   UIKit                           0x000000018a27d840 -[UIApplication workspaceDidEndTransaction:] + 216
2   FrontBoardServices              0x000000018da7563c __31-[FBSSerialQueue performAsync:]_block_invoke + 24
3   CoreFoundation                  0x000000018582a35c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16
4   CoreFoundation                  0x0000000185829464 __CFRunLoopDoBlocks + 308
5   CoreFoundation                  0x0000000185827a88 __CFRunLoopRun + 1752
6   CoreFoundation                  0x0000000185755660 CFRunLoopRunSpecific + 392
7   UIKit                           0x000000018a05f4fc -[UIApplication _run] + 548
8   UIKit                           0x000000018a05a4f4 UIApplicationMain + 1484
9   therichest                      0x00000001001caa8c main (main.m:16)
10  libdyld.dylib                   0x0000000196516a04 start + 0

1 个答案:

答案 0 :(得分:7)

您使用的代码或第三方库是手动旋转runloop。这导致-workspaceDidEndTransaction:被重新调用并在释放后触发使用。如果在 - [NSRunLoop runMode:beforeDate:]和 - [NSRunLoop runUntilDate:]上设置断点,它应该使用前一个堆栈帧上的有罪代码命中。

虽然从不建议手动旋转运行循环,但如果您可以延迟执行直到应用程序完成启动(收到所有启动应用程序委托调用),您应该避免遇到此崩溃。