2015-05-16 39 views
1

在一个线程中初始化NSManagedContext并将它传递给另一个线程安全吗?performBlock:内部插入/提取?在线程之间传递NSManagedObjectContext

所以https://stackoverflow.com/a/12876800/2645683提到performBlock:并涉及到我的问题,但它不足。它没有明确地说出创建上下文的线程以及执行块的线程,而事实上这些将是不同的线程。

答案https://stackoverflow.com/a/12874637/2645683似乎已过时。既然你不能管理每个线程的上下文,并使用performBlock:,因为块可以在不同的线程上执行。

+0

可能重复[核心数据 - 在多个线程之间共享NSManagedObjects](http://stackoverflow.com/questions/12874492/core-data-sharing-nsmanagedobjects-among-multiple-threads) –

+1

@DanielCompton Nah,他有更具体的问题,接受的答案似乎已经过时。 – Maq

+0

初始化'NSManagedObjectContext'是相对“轻量级”的操作,为什么你需要在不同的线程中执行它? –

回答

1

在一个线程中初始化NSManagedContext,然后将它传递给另一个线程,您可以在performBlock:内插入/提取吗?

它是安全的,如果你这样做一切触动performBlock:调用内部核心数据。插入和提取,当然。但是任何时候你都可以用任何方式触摸托管对象,包括使用已经获取的对象的属性值。

你提到“......你不能有管理的每个线程上下文和使用performBlock:......”那不是true--,因为你需要,你可以有很多管理对象上下文,并使用performBlock:与他们。

+0

感谢您的回答。关于每个线程的上下文:performBlock将在线程上运行阻塞(使用插入,提取...),这是不同于线程初始化上下文的。所以会有更多的线程使用上下文。 – Maq