Ios 从通知中心启动应用程序时发生奇怪的崩溃
我不知所措,我遇到了一个奇怪的崩溃,只有当应用程序从通知中心启动时才会发生。点击本地通知(在通知端)或调用extensionContext:openURL:completionHandler(从my Today小部件)将启动带有自定义URL方案的应用程序 当应用程序正在运行(热启动)时,没有问题,正如广告所宣传的那样工作。当我关闭应用程序(在任务切换器中),然后尝试通过通知中心(冷启动)启动它时,我会得到下面的崩溃报告 我到处找,什么都找不到。这只发生在iOS8设备上,iOS7设备没有问题(使用通知启动,显然今天没有小部件) 有人看过这个吗 谢谢Ios 从通知中心启动应用程序时发生奇怪的崩溃,ios,objective-c,ios8-today-widget,Ios,Objective C,Ios8 Today Widget,我不知所措,我遇到了一个奇怪的崩溃,只有当应用程序从通知中心启动时才会发生。点击本地通知(在通知端)或调用extensionContext:openURL:completionHandler(从my Today小部件)将启动带有自定义URL方案的应用程序 当应用程序正在运行(热启动)时,没有问题,正如广告所宣传的那样工作。当我关闭应用程序(在任务切换器中),然后尝试通过通知中心(冷启动)启动它时,我会得到下面的崩溃报告 我到处找,什么都找不到。这只发生在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
您的代码或正在使用的第三方库正在手动旋转运行循环。这导致重新调用-workspacedindendtransaction:并在释放后触发使用。如果在-[nsrunlop runMode:beforeDate:]和-[nsrunlop runUntilDate:]上设置断点,则应在上一个堆栈帧上设置错误代码
虽然不建议手动旋转运行循环,但如果您可以延迟到应用程序启动完成(接收到所有启动应用程序代理调用)后再执行此操作,则应避免发生此崩溃。您是否成功修复了@Mike?我在野外的几个应用程序中看到了同样的情况,但无法通过向应用程序发送推送通知在本地复制。我可以按照上述步骤一致地复制它。另一个有趣的事实是,它只有iOS8。我正在更新到v8.1,看看它是否得到了解决。我希望它已经得到了解决。我还没有在iOS 8.1的应用程序中看到过这种情况,但现在下结论还为时过早。希望您的测试能够确认。尝试推送通知,终止应用程序。然后点击通知中心的通知。我一直在这样做,但还没有成功复制它。我会坚持下去。不过,我现在在iOS8.1中遇到了这个崩溃,所以它在那里没有得到修复。@Dex提到的是正确的。我使用的是一个第三方库,它可以手动旋转运行循环。禁用该库修复了我的问题。从那以后,我还通知了库开发人员。@Mike,谢谢。我修正了我的密码。我在我的didLaunch应用程序方法中旋转runloop。删除该调用修复了crashesHey@Dex如何在-[nsrunlop运行模式:beforeDate:]上设置断点的问题?我也有同样的问题,如何调试?