2016-11-22 3 views
1

In meiner Kalender-basierten App sah ich folgende große Menge von Absturz von App Store Build. aber ich kann nicht reproduzieren und habe diesen Absturz bei der Entwicklung nicht erlebt.Wie Debuggen und reproduzieren `NSOperationQueue` Absturz

Crashlog aus Stoff:

-[EKEventStore(Utils) calendarByRetrievingSafelyWithIdentifier:forEntityType:] 

    Crashed: NSOperationQueue 0x17403fd60 :: NSOperation 0x17425bfc0 (QOS: DEFAULT) 
0 CoreFoundation     0x19179b5d8 -[__NSDictionaryM setObject:forKey:] + 476 
1 EventKit      0x19ab2a0d8 -[EKObject relationForKey:] + 216 
2 EventKit      0x19ab859d4 -[EKCalendar source] + 24 
3 EventKit      0x19ab9d718 -[EKEventStore calendarsForEntityType:] + 512 
4 SampleApp      0x100112554 -[EKEventStore(Utils) calendarByRetrievingSafelyWithIdentifier:forEntityType:] (MySampleCalendarStore.m:4767) 
5 SampleApp      0x1001d3f88 -[MyCalendarDataStore syncCalendarItems:startDate:endDate:completion:] (MyCalendarDataStore.m:84) 
6 SampleApp      0x1000f4e58 __62-[MySampleAppStore syncDeviceCalendarsAndItems:withCompletion:]_block_invoke.1043 (MySampleCalendarStore.m:2499) 
7 Foundation      0x19237e754 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16 
8 Foundation      0x1922c32c8 -[NSBlockOperation main] + 96 
9 Foundation      0x1922b38c4 -[__NSOperationInternal _start:] + 620 
10 Foundation      0x192380b00 __NSOQSchedule_f + 228 
11 libdispatch.dylib    0x1907451c0 _dispatch_client_callout + 16 
12 libdispatch.dylib    0x190753444 _dispatch_queue_serial_drain + 928 
13 libdispatch.dylib    0x1907489a8 _dispatch_queue_invoke + 652 
14 libdispatch.dylib    0x19075538c _dispatch_root_queue_drain + 572 
15 libdispatch.dylib    0x1907550ec _dispatch_worker_thread3 + 124 
16 libsystem_pthread.dylib  0x19094e2b8 _pthread_wqthread + 1288 
17 libsystem_pthread.dylib  0x19094dda4 start_wqthread + 4 

ich diesen Absturz reparieren wollen, habe ich versucht, vergangene Woche mit allen Foren. Ich kann keinen nützlichen Hinweis bekommen, um mein Problem zu lösen. Bitte führen Sie mich, um diese Art von Crash manuell zu reproduzieren und auch zu lösen.

Mein Code:

NSOperationQueue *calendarDataStoresQueue = [[NSOperationQueue alloc] init]; 
for (EKCalendar *calendar in calendars) { 
     [calendarDataStoresQueue addOperationWithBlock:^{ 
      MyCalendarDataStore *calendarDataStore = [[MyCalendarDataStore alloc] initWithCalendar:[[MYCalendar alloc] initWithInfoOfEventKitCalendar:calendar] eventStore:weakSelf.eventStore]; 
      [calendarDataStore syncCalendarItems:items startDate:syncFrom endDate:syncTo completion:^{ 
       complition() 
      }]; 
     }]; 
} 

Mein Utils:

@implementation EKEventStore (Utils) 

- (EKCalendar*)calendarByRetrievingSafelyWithIdentifier:(NSString *)identifier forEntityType:(EKEntityType)entityType { 
    EKCalendar *calendar; 
    NSArray *calendars = [self calendarsForEntityType:entityType]; 
    for (EKCalendar *aCalendar in calendars) { 
     if([aCalendar.calendarIdentifier isEqualToString:identifier]) { 
      calendar = aCalendar; 
      break; 
     } 

    } 
    return calendar; 
} 
@end 

Geleistete danken

+0

haben Sie versucht, 'Exception Haltepunkt? –

+0

ja, ich habe überprüft, immer noch kein glück. – Ammaiappan

Antwort

0

Sie nicht genug Informationen bereitstellen hat; du hast irgendwo deinen Absturz - [EKObject relationForKey:] Methode; noch mehr, Sie haben nicht die genaue Ursache Ihres Absturzes gepostet;

scheint es mir, dass diese Methode [EKObject relationForKey:] dict von selbst erzeugt irgendwo und kann sein, [__NSDictionaryM setObject: forKey:] hier versuchen Sie nil in dict einfügen

+0

Bitte überprüfen Sie das Absturzprotokoll "3 EventKit 0x19ab9d718 - [EKEventStore calendarsForEntityType:] + 512". Ich habe diesen Code in meine Frage gegeben, danach sind alle eventKit Framework-Funktionen. – Ammaiappan

+0

Ja, ich habe es schon gemacht, aber es enthält nicht die notwendigen Informationen; Kannst du mit diesem Absturz einen Screenshot deiner Stoffseite posten? –

+0

Bitte überprüfen Sie das Absturzprotokoll "3 EventKit 0x19ab9d718 - [EKEventStore calendarForEntityType:] + 512". Ich habe diesen Code in meiner Frage, danach sind alle EventKit Framework-Funktionen – Ammaiappan