CoreData和多线程环境

sat*_*ker 1 multithreading core-data objective-c synchronized ios

我的应用程序启用多线程,我不希望任何东西破坏核心数据

当谈到变量时,我们可以安全地使用@Synchronized来确保它不会破坏......但是对于整个核心数据有没有办法做到这一点?

欢迎提出任何建议或方法

Mar*_*rra 7

不要@synchronize与Core Data一起使用.您只需要遵循核心数据的线程规则:

  • 上下文只能用于与其关联的队列(主队列或专用队列)
  • 托管对象只能在与其关联的上下文所属的队列上使用(同样是主队列或专用队列)

而我个人的规则:

  • 如果它正在为UI提供,请使用主队列上下文(最好是单个主队列上下文)
  • 数据处理属于专用队列上下文,该上下文是主队列上下文的子级.

遵循这些规则,保证不会出现线程问题.

  • 核心数据不会以这种方式工作,您不会从中看到性能优势.你想要做的是构建你的`NSFetchRequest`,这样它只会拉入你现在需要的对象**并且它会检索其他对象的列表,这样它就可以通过列表中只有一些他们一次在记忆中.将数千个对象提取到内存中对于内存来说是**BAD**.最好以预期的方式使用该工具. (2认同)