(Draco 在下面的检查回复中提供了一个绝妙的想法。)
当应用程序委托处理自定义 URL,然后在另一个线程上启动操作时,程序中会发生此崩溃。有时操作完成,我可以在 UI 中看到结果。但它总是崩溃。
这只发生在没有调试器的情况下运行。这是崩溃日志:
0 libobjc.A.dylib 0x37d9ff7e objc_msgSend + 22
1 CoreData 0x3634bbd2 -[_PFManagedObjectReferenceQueue _processReferenceQueue:] + 934
2 CoreData 0x3634efd0 _performRunLoopAction + 196
3 CoreFoundation 0x359d2b14 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 12
4 CoreFoundation 0x359d0d50 __CFRunLoopDoObservers + 252
5 CoreFoundation 0x359d10aa __CFRunLoopRun + 754
6 CoreFoundation 0x3595449e CFRunLoopRunSpecific + 294
7 CoreFoundation 0x35954366 CFRunLoopRunInMode + 98
8 GraphicsServices 0x375f0432 GSEventRunModal + 130
9 UIKit 0x33460cce UIApplicationMain + 1074
10 myApp 0x000e2770 main (main.m:15)
11 myApp 0x000e2728 start + 32
看起来它试图响应一个事件,或者更具体地说,是一个通知。如果是这样的话,我猜这个 tageted 观察者已经被移除了,或者它被添加到的对象已经被释放了。
有没有办法可以拦截通知并查看其中的内容?如果可以的话,我可能可以确定缺少哪个观察者,或者至少缩小范围。
添加了更新以解决 WrightsCS 关于所有异常断点的观点。这些都设置为 Break On Throw,所有例外。(Break on catch 也不起作用。)
当在调试器中运行时没有异常、没有崩溃时,这是如何工作的?
更新 2
重新命名以提供其他用户更广泛的搜索范围。是:“应用程序在没有调试器的情况下崩溃,但不是。崩溃日志告诉我什么?”