我有一個iPhone應用程序,我正在開發通過網絡傳輸數據,並保存核心數據對象中接收到的數據以備後用。目前。它在單線程中正常工作,但我正在將數據傳輸機制轉換爲在單獨的工作線程中運行。iPhone核心數據和多線程
我讀過關於多線程的核心數據編程指南,我使用每個線程單獨管理對象的背景和一個持久存儲協調規劃,似乎被蘋果推薦。
應用程序的主線程將永遠需要創建或刪除的核心數據對象而會要求工作線程。它主要是閱讀對象並偶爾修改它們。它還會定期要求工作線程從網絡中獲取新對象或更新現有對象。
我的問題涉及我需要做什麼來支持這一點。核心數據編程的多線程部分表示,我可以通過傳遞對象ID在兩個線程之間「傳遞」對象。我有點困惑,至於我需要做什麼。這兩個線程各自擁有自己獲取的每個對象的副本嗎?如果是這樣,他們如何同步?你是否應該明確地斷定你知道另一個線程已修改的對象以使它們重新加載?
比方說,我在主線程中使用對象和工作線程修改它。是否足以讓工作線程通知主線程該對象已被修改,以便主線程可以錯誤地強制重載?還是會自動故障?或者,也許這整個情況是一個壞主意,會導致一個錯誤?
我想通過具有在目前正在使用的所有對象的主線程的字典實現這一點。當工作者線程修改一個,大概是因爲它從網絡獲取了一個更新的版本,我打算讓它指示主線程,如果主線程當前位於它正在使用的對象列表中,則主線程可能會錯誤對象。這聽起來像一個好主意,還是甚至有必要?
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/Concurrency.html – 2017-04-21 22:36:00