不推荐使用'lock':首先在iOS 8.0中弃用 - 使用-performBlockAndWait:而不是 - iOS coredata警告

时间:2015-12-17 12:09:58

标签: ios core-data locking warnings unlock

我正在使用Xcode 7.1,打开现有应用时会收到此警告。如果有人展示了使用-performBlockAndWait:

的方式,会很有帮助

enter image description here

由于

1 个答案:

答案 0 :(得分:6)

正如蒙迪所说,你不需要锁定你正在做的事情。但是,要解决有关lockunlock被弃用的一般问题...

您应该使用performBlockperformBlockAndWait代替。这些方法与NSManagedObjectContext上的方法类似。

因此,不是手动锁定关键区域,而是将该代码放入一个可以执行的块中。"

例如,如果您有此代码......

[persistentStoreCoordinator lock];
[persistentStoreCoordinator doSomeStuff];
[persistentStoreCoordinator unlock];

你会用......替换它。

[persistentStoreCoordinator performBlock:^{
    [persistentStoreCoordinator doSomeStuff];
}];

请注意,performBlock是一个异步操作,它将立即返回,将代码块安排在将来的某个时刻在某个其他线程上执行。

这应该没问题,因为我们应该使用异步模型进行大部分编程。

如果必须有同步执行,则可以使用替代方法,该方法将在返回调用线程之前完成块的执行。

[persistentStoreCoordinator performBlockAndWait:^{
    [persistentStoreCoordinator doSomeStuff];
}];

同样,这些行为与他们的NSManagedObjectContext对应物完全相同。