【发布时间】:2018-01-25 12:54:54
【问题描述】:
这是我的核心数据操作的代码sn-p。它在大多数情况下都能正常工作。但是现在,当我添加核心数据调试参数以查看所有核心数据调用是否都适用于多线程 Core Data Concurrency Debugging 时,我看到 [contexts 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__]:
任何提示/建议肯定会帮助我找出崩溃,请帮助。
【问题讨论】:
标签: ios objective-c multithreading debugging core-data