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
haben Sie versucht, 'Exception Haltepunkt? –
ja, ich habe überprüft, immer noch kein glück. – Ammaiappan