正如蒙迪所说,你不需要锁定你正在做的事情.但是,要解决您关于lock和unlock被弃用的一般问题......
你应该使用performBlock或performBlockAndWait代替.这些方法类似于上面的方法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对应物完全相同.
| 归档时间: |
|
| 查看次数: |
1368 次 |
| 最近记录: |