我有一个iPhone应用程序,我正在开发通过网络传输数据,并保存核心数据对象中接收到的数据以备后用。目前。它在单线程中正常工作,但我正在将数据传输机制转换为在单独的工作线程中运行。iPhone核心数据和多线程
我读过关于多线程的核心数据编程指南,我使用每个线程单独管理对象的背景和一个持久存储协调规划,似乎被苹果推荐。
应用程序的主线程将永远需要创建或删除的核心数据对象而会要求工作线程。它主要是阅读对象并偶尔修改它们。它还会定期要求工作线程从网络中获取新对象或更新现有对象。
我的问题涉及我需要做什么来支持这一点。核心数据编程的多线程部分表示,我可以通过传递对象ID在两个线程之间“传递”对象。我有点困惑,至于我需要做什么。这两个线程各自拥有自己获取的每个对象的副本吗?如果是这样,他们如何同步?你是否应该明确地断定你知道另一个线程已修改的对象以使它们重新加载?
比方说,我在主线程中使用对象和工作线程修改它。是否足以让工作线程通知主线程该对象已被修改,以便主线程可以错误地强制重载?还是会自动故障?或者,也许这整个情况是一个坏主意,会导致一个错误?
我想通过具有在目前正在使用的所有对象的主线程的字典实现这一点。当工作者线程修改一个,大概是因为它从网络获取了一个更新的版本,我打算让它指示主线程,如果主线程当前位于它正在使用的对象列表中,则主线程可能会错误对象。这听起来像一个好主意,还是甚至有必要?
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/Concurrency.html – 2017-04-21 22:36:00