崩溃:objc_msgSend()选择器名称:_didReceiveConnectionCacheKey

时间:2016-02-08 15:22:19

标签: ios objective-c core-data nspredicate magicalrecord

我实现了一个NSTimer,它调用了一个简单的方法:

NSTimer *timer = [NSTimer timerWithTimeInterval:kTimerDelay target:self selector:@selector(synchronise) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

此方法构建一个NSDictionnary,使用id和枚举搜索CoreData Context中的对象:

- (void)synchronise
{
    NSDictionary *postDict = @{...};
    NSArray *objectIdList = [postDict valueForKeyPath:@"object_items.@allKeys"];
    NSArray *objectList = [P_CoreDataObject MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"id IN %@", objectIdList]];
    MyServiceService *myService = [[MyServiceService alloc] init];
    for (P_CoreDataObject *object in objectList) {
        [myService sendLink:object.link_url success:nil failure:nil];
    }
}

我在另一个对象上调用MR_findAll来构建NSDictionnary并且它运行良好,但在极少数情况下,它会崩溃!

有人知道如何理解这次崩溃吗?

堆栈跟踪:

  

objc_msgSend()选择器名称:_didReceiveConnectionCacheKey:

     

线程0:0 libsystem_kernel.dylib 0x000000018417680c   pread + 8 1 libsqlite3.dylib 0x0000000184ab0b9c   sqlite3_snprintf + 13660 2 libsqlite3.dylib
  0x0000000184acfb20 sqlite3_log + 5472 3 libsqlite3.dylib
  0x0000000184aceab8 sqlite3_log + 1272 4 libsqlite3.dylib
  0x0000000184af223c sqlite3_step + 60112 5 libsqlite3.dylib
  0x0000000184af3620 sqlite3_value_text + 3412 6 libsqlite3.dylib
  0x0000000184ae5088 sqlite3_step + 6428 7 libsqlite3.dylib
  0x0000000184ae3960 sqlite3_step + 500 8 CoreData
  0x000000018604fab8 _execute + 144 9 CoreData
  0x000000018605f988 - [NSSQLiteConnection   fetchResultSet:usingFetchPlan:] + 1644 10 CoreData
  0x000000018616150c newFetchedRowsForFetchPlan_MT + 1560 11 CoreData
  0x00000001860567e4 - [NSSQLCore objectsForFetchRequest:inContext:] +   536 12 CoreData 0x0000000186056218    - [NSSQLCore executeRequest:withContext:error:] + 596 13 CoreData 0x000000018611d910 __65- [NSPersistentStoreCoordinator   executeRequest:withContext:error:] _ block_invoke + 2620 14 CoreData
  0x0000000186125d58 gutsOfBlockToNSPersistentStoreCoordinatorPerform +   172 15 libdispatch.dylib 0x00000001840415f0   _dispatch_client_callout + 12 16 libdispatch.dylib 0x000000018404c89c _dispatch_barrier_sync_f_invoke + 96 17 CoreData
  0x00000001861185b0 _perform + 176 18 CoreData
  0x0000000186055e70 - [NSPersistentStoreCoordinator   executeRequest:withContext:error:] + 296 19 CoreData
  0x0000000186054938 - [NSManagedObjectContext   executeFetchRequest:error:] + 532 20 CoreData
  0x00000001860f6318 - [NSManagedObjectContext(_NestedContextSupport)   _parentObjectsForFetchRequest:inContext:error:] + 416 21 CoreData 0x00000001860f6a44 __82- [NSManagedObjectContext(_NestedContextSupport)   executeRequest:withContext:error:] _ block_invoke + 344 22 CoreData
  0x00000001860f8d80 internalBlockToNSManagedObjectContextPerform + 104   23 libdispatch.dylib 0x00000001840415f0   _dispatch_client_callout + 12 24 libdispatch.dylib 0x000000018404c89c _dispatch_barrier_sync_f_invoke + 96 25 CoreData
  0x00000001860e86fc _perform + 208 26 CoreData
  0x00000001860f6824 - [NSManagedObjectContext(_NestedContextSupport)   executeRequest:withContext:error:] + 172 27 CoreData
  0x0000000186054938 - [NSManagedObjectContext   executeFetchRequest:error:] + 532 28 Youboox
  0x0000000100236268 __67 + [NSManagedObject(MagicalRecord)   MR_executeFetchRequest:inContext的:] _ block_invoke   (NSManagedObject + MagicalRecord.m:54)29 CoreData
  0x00000001860ed080   developerSubmittedBlockToNSManagedObjectContextPerform + 192 30   CoreData 0x00000001860ecf48    - [NSManagedObjectContext performBlockAndWait:] + 216 31 Youboox 0x00000001002361ac + [NSManagedObject(MagicalRecord)   MR_executeFetchRequest:inContext的:]   (NSManagedObject + MagicalRecord.m:50)32 Youboox
  0x00000001002344d4 + [NSManagedObject(MagicalFinders)   MR_findAllWithPredicate:inContext的:]   (NSManagedObject + MagicalFinders.m:76)33 Youboox
  0x0000000100234568 + [NSManagedObject(MagicalFinders)   MR_findAllWithPredicate:](NSManagedObject + MagicalFinders.m:84)

编辑:创建线程堆栈跟踪

  

线程18崩溃:0 libobjc.A.dylib
  0x0000000183c6dbc8 objc_msgSend + 8 1 CFNetwork
  0x0000000184c3a518   SessionConnectionLoadable :: _ loaderClientEvent_DidReceiveConnectionCacheKey(HTTPConnectionCacheKey *)   + 52 2 CFNetwork 0x0000000184cb9178 ___ZN19URLConnectionLoader36protocolDidReceiveConnectionCacheKeyEP22HTTPConnectionCacheKey_block_invoke   + 36 3 libdispatch.dylib 0x0000000184041630 _dispatch_call_block_and_release + 20 4 libdispatch.dylib 0x00000001840415f0 _dispatch_client_callout + 12 5 libdispatch.dylib   0x000000018404d634 _dispatch_queue_drain + 860 6 libdispatch.dylib
  0x00000001840450f4 _dispatch_queue_invoke + 460 7 libdispatch.dylib   0x000000018404f504 _dispatch_root_queue_drain + 724 8
  libdispatch.dylib 0x000000018404f224   _dispatch_worker_thread3 + 108 9 libsystem_pthread.dylib 0x0000000184255470 _pthread_wqthread + 1088 10   libsystem_pthread.dylib 0x0000000184255020 start_wqthread   + 0

0 个答案:

没有答案