我在我的智慧结束时,我得到了一个奇怪的崩溃,只有当应用程序从通知中心启动时才会发生。点击本地通知(在通知方面)或调用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
答案 0 :(得分:7)
您使用的代码或第三方库是手动旋转runloop。这导致-workspaceDidEndTransaction:被重新调用并在释放后触发使用。如果在 - [NSRunLoop runMode:beforeDate:]和 - [NSRunLoop runUntilDate:]上设置断点,它应该使用前一个堆栈帧上的有罪代码命中。
虽然从不建议手动旋转运行循环,但如果您可以延迟执行直到应用程序完成启动(收到所有启动应用程序委托调用),您应该避免遇到此崩溃。