NSPrivateQueueConcurrencyType without Perform Block

时间:2016-04-07 10:53:59

标签: ios xcode core-data nsmanagedobjectcontext

I have created a NSManagedObjectContext with the ConcurrencyType NSPrivateQueueConcurrencyType. I read that we should use only perform Block API for every task with context.

My question is what will happen if do not use perform block API and directly execute task with context?

1 个答案:

答案 0 :(得分:2)

简短:不要。

更长:它取决于NSManagedObjectContext的PrivateConcurrencyType版本的内部实现。我认为,如果你只是从一个线程中使用它并且不会将对象从该上下文传递给任何其他线程,那么可能工作。或不。但是

  1. 不保证;
  2. 如果你只想从一个线程中使用它,你需要 限制并发类型。实际上,我可能根本不会使用限制,以防万一我以后需要一些并发,但我们在这里理论上是对的,对吧?
  3. 即使现在有效,也可能会在将来破裂。
  4. 如果你想从不同的线程中使用这个上下文,肯定会破坏 。有些数据可能会随机消失或重新出现(发生在我身上),有些事情可能会崩溃,独角兽可能会风靡你的办公室。所以只是没有