2016-11-22 18 views
1

私のカレンダーベースのアプリでは、アプリストアのビルドから大量のクラッシュが発生しました。しかし、私は再現することはできませんし、開発にこのクラッシュに直面していません。生地から`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 

アドバンスありがとう

+0

にnilを挿入しようと、あなたは '例外を試してみましたブレークポイント? –

+0

はい、私はまだ運がないことを確認しました。 – Ammaiappan

答えて

0
あなたが十分な情報を投稿していなかった

。あなたはあなたのクラッシュをどこかに持っています - [EKObject relationForKey:] method;さらに、あなたはあなたのクラッシュの正確な原因を投稿していません。

この方法[EKObject relationForKeyは:]という、私には思えるのどこかに自分自身から辞書を生成し、[__NSDictionaryMのsetObject:forKeyは:]であってもよく、ここであなたがdictの

+0

クラッシュログ "3 EventKit 0x19ab9d718 - [EKEventStore calendarsForEntityType:] + 512"を確認してください。私はこのコードを私の質問で与えました。これはすべてeventKitフレームワーク関数です。 – Ammaiappan

+0

うん、私はすでにそれをやったが、必要な情報が含まれていない。このクラッシュでファブリックページのスクリーンショットを投稿できますか? –

+0

クラッシュログ "3 EventKit 0x19ab9d718 - [EKEventStore calendarsForEntityType:] + 512"を確認してください。私はこのコードを私の質問に入れました。この後はすべてeventKitフレームワーク関数 – Ammaiappan

関連する問題