Core Data 多线程操作实战篇
最近在解決百度音樂iPhone客戶端偶現數據庫操作crash的問題,順手整理了下CoreData的多線程原則,以及實際開發時應該如何遵守這些原則。
Core Data多線程操作的基本原則
Core Data的新版本
所謂的新版本,其實是從iOS 5.0就開始支持了。新版本的Core Data廢棄了confinement context,替代它的是queue context。這兩種context的區別在于,使用confinement context必須自己保證CRUD操作只在創建它的線程上執行,也就是說創建這個confinement context的線程就是它的操作線程。 而使用queue context則只需要用-performBlock:或者-performBlockAndWait:方法執行CRUD操作,這些操作都被dispatch到context持有的serial _dispatchQueue上執行。
Magical Record的新版本(coming soon)
根據Magical Record的說明,從3.0版本起,MagicalRecord中的-MR_contextForCurrentThread將被棄用。剛開始我沒想清楚其中的原因,后來通過在github上提問,Magical Record的維護者之一tonyarnold給出的原因是:
我是這么理解的:
App中應該如何遵守Core Data的多線程操作原則
如果你App也使用了Magical Record, 那么建議你按照官方說明上的方式替換掉它打算廢棄的API。比如用每次創建一個新的-MR_context的方式來替換掉-MR_contextForCurrentThread的使用。
下面是我在修改百度音樂iPhone客戶端的數據庫操作時總結的幾個方法:
每個入參有MO的方法
Core Data有關的Debug方式
- -com.apple.CoreData.ConcurrencyDebug 3
- -com.apple.CoreData.SQLDebug 3
- -com.apple.CoreData.SyntaxColoredLogging YES
轉載于:https://www.cnblogs.com/mindyme/p/5089454.html
總結
以上是生活随笔為你收集整理的Core Data 多线程操作实战篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到自己掉发秃顶什么意思
- 下一篇: 为什么最近老是梦到初恋