iOS開發框架-CDD應用層架構學習總結

怎麼樣用context,把數據、view和業務邏輯串起來的?

例如:聊天頁面,輸入框view產生的「hello」文本,直接經過context傳遞到BusinessObject進行處理,生成的新消息message經過DataHandler插入到message array以後,直接通知到message tableview進行刷新。方法調用的路徑變短了,意味着調試的時候step over的次數減小了。git

經過model+protocol進行耦合。耦合的雙方須要引用相同的model和protocol文件。這種方式屬於面向接口編程的範疇,耦合也比較弱。優勢是調試方便,delegate的調試能夠單步step into。github

 

 

幾個理解點:編程

  • 爲何引入Context,或者Context的用途是什麼?數組

 VC建立並強引用Context,讓dataHandler和bussinessObject弱引用這個Context,讓本身的子view強引用這個Context。這樣經過Context鏈接業務、VC、View、數據。spa

  • data flow是怎樣的?

用戶經過view產生數據,經過Context將數據,交給BussinessObject(將數據model化),交給dataHandler作增刪改,經過KVO,刷新view。3d

  • 爲何有的地方用的是weakContext?

Context初始化完成,強引用dataHandler和bussinessObject。爲了不互相強引用,形成內存泄漏,因此CDDDataHandler和CDDBusinessObject弱引用Context。調試

  •  bussinessObject的屬性baseController,用途是什麼?

在VC建立bussinessObject時,bo.baseController = self;// 用於bussinessObject處理頁面跳轉(業務)orm

遇到的坑:blog

  • 爲何按鈕的圖片沒有顯示出來?

[_imgAvatarButton sd_setImageWithURL:[NSURL URLWithString:msg.fromUser.avatarUrl] forState:UIControlStateNormal];//由於info裏沒有容許http繼承

 

EMainController:綁定vc,view,presenter,interactor,context,發消息給IMainView

EMainPresenter:繼承EPresenter,組裝model數組,提供給adapter;發消息給IMainInteractor
EMainView:繼承CDDView,初始化subview
EMainAdapter:繼承EAdapter,能夠重寫dataSource和delegate方法,
EMainInteractor:繼承CDDInteractor,轉場vc

IMainPresenter:自定義協議方法,發消息給EMainPresenter,作具體的事情
IMainView:自定義協議方法,發消息給EMainView,作具體的事情
IMainInteractor自定義協議方法,發消息給EMainInteractor,作具體的事情

MainEntry:繼承EAdapter,定義model,並提供初始化方法
EAdapter:收發數據,執行dataSource和delegate

 

文獻:http://mrpeak.cn/blog/cdd/

項目實例:https://github.com/music4kid/TKeyboard

相關文章
相關標籤/搜索