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

Con*_*sed 3 warnings locking core-data unlock ios

我正在使用Xcode 7.1,在打开现有应用程序时收到此警告.如果有人展示使用方式会很有帮助-performBlockAndWait:

在此输入图像描述

谢谢

Jod*_*ins 6

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

你应该使用performBlockperformBlockAndWait代替.这些方法类似于上面的方法NSManagedObjectContext.

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

例如,如果你有这个代码......

[persistentStoreCoordinator lock];
[persistentStoreCoordinator doSomeStuff];
[persistentStoreCoordinator unlock];
Run Code Online (Sandbox Code Playgroud)

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

[persistentStoreCoordinator performBlock:^{
    [persistentStoreCoordinator doSomeStuff];
}];
Run Code Online (Sandbox Code Playgroud)

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

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

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

[persistentStoreCoordinator performBlockAndWait:^{
    [persistentStoreCoordinator doSomeStuff];
}];
Run Code Online (Sandbox Code Playgroud)

同样,这些行为与其NSManagedObjectContext对应物完全相同.