在线程之间传递NSManagedObjectContext

时间:2015-05-16 08:01:26

标签: core-data thread-safety nsmanagedobjectcontext

在一个线程中初始化NSManagedContext然后将其传递给另一个在performBlock:内进行插入/取出的线程是否安全?

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

答案https://stackoverflow.com/a/12874637/2645683似乎已经过时了。由于您无法为每个线程设置托管上下文并使用performBlock:,因为块可以在不同的线程上执行。

1 个答案:

答案 0 :(得分:1)

  

在一个线程中初始化NSManagedContext然后将其传递到另一个在performBlock:内进行插入/取出的线程是否安全?

如果您在performBlock:来电中执行触及核心数据的所有内容,那就安全了。插入和提取,当然。但是,无论何时以任何方式触摸托管对象,包括使用已经提取的对象的属性值。

你提到“......你不能为每个线程设置托管上下文并使用performBlock:...”这不是真的 - 你可以根据需要拥有尽可能多的托管对象上下文,并且使用performBlock: