NSFetchedResultController的performFetch线程安全吗?

时间:2011-02-11 07:46:33

标签: iphone core-data

我在多线程中使用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        
}

1 个答案:

答案 0 :(得分:1)

如果您的fetchedResultsController在多个线程之间共享,那么您不仅必须在执行提取之前锁定托管对象上下文,而且在使用该提取返回的任何对象时也必须锁定 < / strong>即可。当然,这不是一件容易保证的事情,而且往往会限制在多线程上做事的好处。

强烈建议使用Core Data的应用程序为每个线程使用一个托管对象上下文。有关详细信息,请参阅Concurrency with Core Data