我在多线程中使用NSManagedObjectContext。 我想知道它是否在调用NSFetchedResultController performFetch之前请求锁定。
我要这样做吗
[moc lock];
NSError *error = nil;
if (![fetchedResultsController_ performFetch:&error]) {
//TODO: add fetch error handler
}
[moc unlock];
或者只是
NSError *error = nil;
if (![fetchedResultsController_ performFetch:&error]) {
//TODO: add fetch error handler
}
答案 0 :(得分:1)
如果您的fetchedResultsController
在多个线程之间共享,那么您不仅必须在执行提取之前锁定托管对象上下文,而且在使用该提取返回的任何对象时也必须锁定 < / strong>即可。当然,这不是一件容易保证的事情,而且往往会限制在多线程上做事的好处。
强烈建议使用Core Data的应用程序为每个线程使用一个托管对象上下文。有关详细信息,请参阅Concurrency with Core Data。