0

我正在使用NSPrivateQueueConcurrencyType并发类型创建我的托管对象上下文。

我也使用performBlock:选择器在后台执行操作。因此,如果我在后台(在 performBlock 中)获取一些对象,那么在主线程中使用生成的托管对象是否安全?

4

4 回答 4

0

我不是 100% 确定,但根据我自己的经验,我是这样做的:如果您要更改变量属性,请在performBlock. 我有一个案例,阅读导致一些奇怪的行为,但总的来说它似乎没问题。如果您想更加安全,performBlock请在每次以任何方式触摸托管对象时使用。

于 2012-08-24T07:14:15.890 回答
0

您需要为每个线程使用不同的上下文,如此处所述iOS Developer - Core data multithreading

Core Data描述了一种实现方式- 每个线程实现一个上下文

于 2012-08-24T07:19:51.740 回答
0

抱歉,我应该搜索得更好,这正是我的问题和答案: Core Data's NSPrivateQueueConcurrencyType andsharing objects between threads

于 2012-08-24T07:43:51.717 回答
0

NSManagedObject作为一般规则,无论您使用什么并发类型,跨线程 共享实例都是不安全的。

但是,您可以使用一个来使您的上下文和对象实例成为线程安全的。有了它,您几乎可以忽略所有关于确保上下文之间线程隔离的废话,并将精力集中在重要的事情上,例如构建应用程序的实际功能。

于 2012-08-26T23:42:07.530 回答