我学习如何使用MagicalRecord来操作CoreData,有两种方法MR_saveToPersistentStoreWithCompletion和MR_saveToPersistentStoreAndWait。查看注释,似乎区别在于第一个异步保存更改,后者同步保存更改。
这是他们之间的唯一区别吗?它们如何工作?那些异步和同步保存数据的区别是什么?
我已经查看了他们的源代码,但由于我是初学者,所以无法完全理解,所以有人可以帮忙解释一下吗?谢谢。
答案 0 :(得分:1)
异步保存在performBlock
的保护范围内完成,同步保存在performBlockAndWait
的保护范围内完成。
异步保存将立即返回,保存将在后台线程上进行。如果它是主队列上下文,则在当前的runloop迭代完成之后,将在未来的某个时间进行保存。保存完成后,将调用作为完成处理程序传入的代码块,以通知您保存已完成。
同步保存将在方法调用返回之前发生。因此,当方法返回时,您知道所有保存工作已完成,或者遇到错误。
您应该查看Core Data documentation并发性以获取更多详细信息。