2015-05-16 38 views
1

在一個線程中初始化NSManagedContext並將它傳遞給另一個線程安全嗎?performBlock:內部插入/提取?在線程之間傳遞NSManagedObjectContext

所以https://stackoverflow.com/a/12876800/2645683提到performBlock:並涉及到我的問題,但它不足。它沒有明確地說出創建上下文的線程以及執行塊的線程,而事實上這些將是不同的線程。

答案https://stackoverflow.com/a/12874637/2645683似乎已過時。既然你不能管理每個線程的上下文,並使用performBlock:,因爲塊可以在不同的線程上執行。

+0

可能重複[核心數據 - 在多個線程之間共享NSManagedObjects](http://stackoverflow.com/questions/12874492/core-data-sharing-nsmanagedobjects-among-multiple-threads) –

+1

@DanielCompton Nah,他有更具體的問題,接受的答案似乎已經過時。 – Maq

+0

初始化'NSManagedObjectContext'是相對「輕量級」的操作,爲什麼你需要在不同的線程中執行它? –

回答

1

在一個線程中初始化NSManagedContext,然後將它傳遞給另一個線程,您可以在performBlock:內插入/提取嗎?

它是安全的,如果你這樣做一切觸動performBlock:調用內部核心數據。插入和提取,當然。但是任何時候你都可以用任何方式觸摸託管對象,包括使用已經獲取的對象的屬性值。

你提到「......你不能有管理的每個線程上下文和使用performBlock:......」那不是true--,因爲你需要,你可以有很多管理對象上下文,並使用performBlock:與他們。

+0

感謝您的回答。關於每個線程的上下文:performBlock將在線程上運行阻塞(使用插入,提取...),這是不同於線程初始化上下文的。所以會有更多的線程使用上下文。 – Maq