在后台线程上安全保存Core Data托管对象上下文的正确方法?

时间:2011-04-22 03:48:08

标签: ios multithreading core-data nsmanagedobjectcontext

在讨论将核心数据与后台线程一起使用时,Apple "Concurrency with Core Data" documentation说明如下。

  

保存在后台线程中容易出错

     

异步队列和线程不会阻止应用程序   狭路相逢。 (具体来说,所有基于NSThread的线程都是“分离的” - 请参阅   pthread的文档以获取完整的详细信息 - 并运行一个过程   直到所有未分离的线程都退出。)

,特别是:

  

如果需要保存后台线程,则必须编写其他代码,以便主线程阻止应用程序退出,直到完成所有保存操作。

在IOS应用程序中实现此目的的推荐方法是什么?

2 个答案:

答案 0 :(得分:5)

在app委托applicationWillTerminate和相关方法中,您需要检查是否有任何后台线程有未保存的更改,并在允许应用终止或进入后台之前保存它们。

答案 1 :(得分:0)

我建议您使用魔法记录(https://github.com/magicalpanda/MagicalRecord/)。它极大地简化了在后台线程上处理核心数据的过程。我最近发现了这个并将它用于一个项目。我们现在已经进行了维护工作,以更新各种现有应用程序以使用新的Magical Record Core Data包装器。在我们使用它的几周内,它为我们节省了大量的时间和挫折。