iOS中操作CoreData架構設計

來源:互聯網
上載者:User

coreData是iOS開發中資料庫相關的核心架構,但是在多執行緒的情況下有點麻煩。官方有三種方法
 
1. 每一個thread都有一個NSManageObjectContext
 
2. 只有一個NSManageObjectContext,但是由一個線程來合并資料
 
3. 只有一個NSManageObjectContext,但得加鎖的方法控制,達到線程同步。
 
這三種方法都在網方文檔中有介紹。
 
 
 
 
今天我自己介紹一種方法,並用有demo展示。設計思路是:
 
專門開啟一個線程,用來處理所有的資料庫操作,有一個緩衝區,用來存放所有資料庫操作的命令(update/insert/delete/retrive),我叫這個線程為資料庫操作線程。 其它線程,如主線程,如果需要retrive資料,就產生相應的資料庫操作命令並存放在資料庫操作線程的緩衝區中。然後資料庫操作線程就讀取緩衝區中的命令執行,並執行主線程傳進來的回調方法。其實這就是生產者消費者模型, 我用NSConditionLock來同步緩衝區, 用block的方式實現回調。
 
 
 
 
這個設計的好處:
 
1.只需要實現回調方法與產生相應的資料庫操作命令,至於如何寫,我的demo裡都有例子。
 
2.不需要管理多線程操作資料庫帶來的麻煩。
 
3.簡單易用。
 
 
 
 
完整demo下載:傳送門
 
 
 
代碼沒寫注釋, 不懂的可以問我。


摘自 開心程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.