我正在使用 performBlock: 和 performBlockAndWait: 方法在只读数据库上的上下文中执行获取请求(它与我的应用程序一起打包,因此从未写入)。
我是否也应该将每个 NSManagedObject 访问器包装在 performBlockAndWait: 中?- 那会很混乱。每当 CoreData 的一对多关系出错而 CoreData 的私有队列正在使用 performBlock 执行时,我目前都会崩溃:
就像是:
NSManagedObject* alreadyFetchedObject = ...;
NSArray* alreadyFetchedObject.otherObjects; // Crashes here on main thread (no performBlock wrapped around accessing otherObjects)
.
[context performBlockAndWait:^{
// Currently executing here on CoreData's own queue
result = [context executeFetchRequest:fetchRequest error:nil];
}];