2016-04-07 26 views
-1

我創建了一個帶有ConcurrencyType NSPrivateQueueConcurrencyType的NSManagedObjectContext。我讀過,我們應該只對每個具有上下文的任務使用Block API。NSPrivateQueueConcurrencyType沒有執行塊

我的問題是如果不使用執行塊API並直接使用上下文執行任務會發生什麼?

回答

2

短:不。

更長:它取決於PrivateConcurrencyType版本NSManagedObjectContext的內部實現。我認爲,如果您只能從一個線程使用它,並且不會將對象從該上下文傳遞到任何其他線程,它可能會可能工作。或不。但是

  1. 它不能保證;
  2. 如果您只打算從一個線程使用它,則需要使用 限制併發類型。其實,我根本不會使用限制,以防以後需要一些併發,但我們在這裏是理論上的,對吧?
  3. 即使它現在有效,它可能會在未來破裂。

如果你想從不同的線程使用這個上下文,當然肯定會有。有些數據可能會隨機消失或重新出現(發生在我身上一次),有些數據可能會崩潰,並且獨角獸可能會讓您的辦公室風波不斷。所以只是不要

+1

禁閉已被棄用。至於其餘的,OP應該遵循這個建議。不要使用沒有performBlock的私有上下文。它最終會破壞數據。 –

+0

@ MarcusS.Zarra,謝謝,我知道這不是建議的,但我忘了它已被棄用。無論如何,我不使用它 :) – FreeNickname