ここに私のコアデータ操作のコードスニペットがあります。ほとんどの場合、大丈夫です。しかし、今では、コアデータのデバッグ引数を追加して、すべてのコアデータ呼び出しがマルチスレッドCore Data Concurrency Debuggingに関して正常かどうかを確認すると、[contexts reset]行にクラッシュが発生しています。 。[managedObjectContext reset]でコアデータがクラッシュする。
- (void)readAllModelObjects {
NSFetchRequest * fr = [NSFetchRequest ....]
NSManagedObjectContext * context = [selg getChildContext];
[context performBlockAndWait:^{
NSArray * resultArray = [context executeFetchRequest:fr error: nil ];
NSArray * nonCoreDataModelObjectsArray = [self parseCoreDataObjectsToModel: resultArray];
_memberResultArray = nonCoreDataModelObjectsArray ;
}];
[context reset]; // This is the line it crashes .
}
- (NSManagedObjectContet *)getChildContext {
NSManagedObjectContext * privateContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
privateContext.parentContext = [self mainQueueManagedObjectContext];
return privateContext ;
}
- (NSArray *)parseCoreDataObjectsToModel:(NSArray *)cdObjectsArray {
// creates and initializes the model objects array (non managed object class objects) from core data objects
// return this array
}
永続ストアコーディネーターに取り付けただけで一つのメインキュー・コンテキストがあります。これは、コアデータ操作用に作成された各子コンテキストの親として使用されます。
(void)readAllModelObjectsは、期待どおりバックグラウンドスレッドから呼び出されます。
私は、任意のヒント/提案は間違いなくクラッシュを考え出すの私を助ける
CoreData`+[NSManagedObjectContext _
_Multithreading_Violation_AllThatIsLeftToUsIsHonor__]:
コアデータからエラーの下になった、助けてください。
コアデータからオブジェクトを読み取っているときにresetを呼び出すことが役に立たない理由を詳しく説明してください。 –