我正在使用NSPrivateQueueConcurrencyType
并发类型创建托管对象上下文。
此外,我正在使用performBlock:
选择器在后台执行操作。所以如果我在后台获取一些对象(在performBlock :)中,在主线程中使用生成的托管对象是否安全?
答案 0 :(得分:0)
我不是百分百肯定,但根据我自己的经验,我这样做:如果你更改变量属性,请在performBlock
内进行。我有一个案例,阅读引起了一些奇怪的行为,但总的来说似乎没问题。如果您想要更加安全,请在每次以任何方式触摸托管对象时使用performBlock
。
答案 1 :(得分:0)
您需要为每个线程使用不同的上下文,如iOS Developer - Core data multithreading
中所述 中描述答案 2 :(得分:0)
抱歉,我应该更好地搜索,这是我的问题&回答: Core Data's NSPrivateQueueConcurrencyType and sharing objects between threads
答案 3 :(得分:0)
作为一般规则,无论您使用何种并发类型,都不能跨线程共享NSManagedObject
实例。
但是,您可以使用library来使您的上下文和对象实例具有线程安全性。有了这个,您几乎可以忽略关于确保上下文之间的线程隔离的所有废话,并将注意力集中在重要事项上,例如构建应用程序的实际功能。