【发布时间】:2016-04-07 10:53:59
【问题描述】:
我创建了一个带有 ConcurrencyType NSPrivateQueueConcurrencyType 的 NSManagedObjectContext。我读到我们应该只对每个带有上下文的任务使用 perform Block API。
我的问题是如果不使用执行块 API 并直接执行带有上下文的任务会发生什么?
【问题讨论】:
标签: ios xcode core-data nsmanagedobjectcontext
我创建了一个带有 ConcurrencyType NSPrivateQueueConcurrencyType 的 NSManagedObjectContext。我读到我们应该只对每个带有上下文的任务使用 perform Block API。
我的问题是如果不使用执行块 API 并直接执行带有上下文的任务会发生什么?
【问题讨论】:
标签: ios xcode core-data nsmanagedobjectcontext
简短:不要。
更长:它取决于NSManagedObjectContext 的 PrivateConcurrencyType 版本的内部实现。我想,如果您只在一个线程中使用它并且不会将该上下文中的对象传递给任何其他线程,那么它可能会起作用。或不。但是
如果您想在不同的线程中使用此上下文,肯定会出现问题。一些数据可能会随机消失或重新出现(曾经发生在我身上),某些东西可能会崩溃,独角兽可能会席卷您的办公室。所以不要
【讨论】: