Objective c 应用程序在调度队列中崩溃:NSOperationQueue
我的应用程序有时会出现以下崩溃:Objective c 应用程序在调度队列中崩溃:NSOperationQueue,objective-c,nsoperation,nsoperationqueue,Objective C,Nsoperation,Nsoperationqueue,我的应用程序有时会出现以下崩溃: Crashed Thread: 4 Dispatch queue: NSOperationQueue 0x7fc2d96277c0 :: NSOperation 0x7fc2d9704440 (QOS: UTILITY) Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x000007fc2d968980
Crashed Thread: 4 Dispatch queue: NSOperationQueue 0x7fc2d96277c0 :: NSOperation 0x7fc2d9704440 (QOS: UTILITY)
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000007fc2d968980
Exception Note: EXC_CORPSE_NOTIFY
Thread 4 Crashed:: Dispatch queue: NSOperationQueue 0x7fc2d96277c0 :: NSOperation 0x7fc2d9704440 (QOS: UTILITY)
0 libobjc.A.dylib 0x00007fff86bd720f objc_release + 31
1 libobjc.A.dylib 0x00007fff86bdeb81 object_cxxDestructFromClass(objc_object*, objc_class*) + 127
2 libobjc.A.dylib 0x00007fff86bd7383 objc_destructInstance + 116
3 libobjc.A.dylib 0x00007fff86bd72e5 object_dispose + 22
4 libobjc.A.dylib 0x00007fff86bdd224 objc_object::sidetable_release(bool) + 242
5 com.apple.CoreFoundation 0x00007fff9198d2dd -[__NSArrayM dealloc] + 205
6 libobjc.A.dylib 0x00007fff86bdd224 objc_object::sidetable_release(bool) + 242
7 com.my.app 0x0000000105776471 -[MyNSOperation execute] + 1438
8 com.apple.Foundation 0x00007fff8d59726e -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] + 1115
9 com.apple.Foundation 0x00007fff8d61b309 -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:] + 119
10 com.apple.Foundation 0x00007fff8d5f60be __NSFireDelayedPerform + 377
11 com.apple.CoreFoundation 0x00007fff919f19f4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
12 com.apple.CoreFoundation 0x00007fff919f1683 __CFRunLoopDoTimer + 1075
13 com.apple.CoreFoundation 0x00007fff919f11da __CFRunLoopDoTimers + 298
14 com.apple.CoreFoundation 0x00007fff919e86d1 __CFRunLoopRun + 1841
15 com.apple.CoreFoundation 0x00007fff919e7d38 CFRunLoopRunSpecific + 296
16 com.apple.Foundation 0x00007fff8d5870f9 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 270
17 com.my.app 0x000000010574ff10 -[BaseMyNSOperation start] + 711
18 com.apple.Foundation 0x00007fff8d5a41b0 __NSOQSchedule_f + 194
19 libdispatch.dylib 0x00007fff8d51c453 _dispatch_client_callout + 8
20 libdispatch.dylib 0x00007fff8d521083 _dispatch_queue_drain + 754
21 libdispatch.dylib 0x00007fff8d5276c9 _dispatch_queue_invoke + 549
22 libdispatch.dylib 0x00007fff8d51fd9b _dispatch_root_queue_drain + 538
23 libdispatch.dylib 0x00007fff8d51fb48 _dispatch_worker_thread3 + 91
24 libsystem_pthread.dylib 0x00007fff88c884f2 _pthread_wqthread + 1129
25 libsystem_pthread.dylib 0x00007fff88c86375 start_wqthread + 13
我知道这与服务质量
有关,因此我在我的操作
的执行
消息中添加了以下代码:
self.qualityOfService = NSQualityOfServiceUtility;
我找不到与这次事故有关的任何其他参考资料。任何人都可以推荐任何线索?最近,我经常在IOS 9.0.2的-[[uuuuu NSArrayM dealloc]中看到这种神秘的崩溃EXC_BAD_ACCESS KERN_INVALID_ADDRESS。这发生在OSX 10.11中,但从我目前的理解来看,这两种崩溃都是相当新的,崩溃是在处理
NSMutableArray
时发生的,它可能是因为它已经发布而崩溃的。这有道理吗?可能有道理。但我现在不知道如何在ARC中释放已经释放的阵列。可能是您在CFArray
中的某个地方使用了错误的\uu桥
选项吗?我没有,所以它确实没有意义。不过我还有另一个想法:我在某个地方读到,如果某个类具有MyNSOperation的委托的弱属性,则可能会导致此问题。。