私のカレンダーベースのアプリでは、アプリストアのビルドから大量のクラッシュが発生しました。しかし、私は再現することはできませんし、開発にこのクラッシュに直面していません。生地から`NSOperationQueue`クラッシュをデバッグして再現する方法
クラッシュログ:
-[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
私はこのクラッシュを修正したい、私はすべてのフォーラムで、過去一週間試してみました。私は私の問題を解決するための有用な手がかりを得ることができません。 このタイプのクラッシュを手動で再現し、解決に役立ててください。
マイコード:
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()
}];
}];
}
私の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
アドバンスありがとう
にnilを挿入しようと、あなたは '例外を試してみましたブレークポイント? –
はい、私はまだ運がないことを確認しました。 – Ammaiappan