我从Web服务获取一些数据并将其保存在核心数据中。此工作流程如下所示:
现在,问题当然是性能 - 一切都在主线程上运行。我想尽可能多地重新考虑另一个线程,但我不确定我应该从哪里开始。将所有内容(1-4)放到单独的线程中是否可以?
答案 0 :(得分:2)
是的,我建议您查看Apple的多线程核心数据文档和我在MDN(Mac开发人员网络)http://www.mac-developer-network.com/columns/coredata/may2009/上的文章,其中讨论了您需要避免的事项以及如何设置所有内容。
BTW,将大量二进制数据保存到Core Data对象通常是一个坏主意。规则如下:1MB保存到磁盘并将其路径存储到托管对象
因此,您可以将二进制数据的下载拆分为单独的线程,将它们保存到磁盘,然后告诉主线程引用对象的NSManagedObjectID
和路径,让主线程快速完成和简单的链接。这样可以让你的核心数据实现保持单线程,并且只会剥离数据下载。