一次簡單的ReactiveCocoa+MVVM的實踐

畢業(yè)到現(xiàn)在已經(jīng)兩年多了,時間就像手中的沙子,無論你是攤開還是握緊,它總會從指間流逝!

? ? ? 兩年多的工作經(jīng)驗,從最初寫代碼什么東西都往控制器里寫導(dǎo)致一個稍微大點的項目里隨處可見容納上千行代碼的控制器,到為了提高運行效率而使用的MVC框架,再到如今的MVVM框架。一路走來不知道踩了多少的坑坑洼洼,但是我很慶幸自己堅持下來了。

? ? ?說起代碼質(zhì)量,我覺得很對不住上一家的公司,公司只有我一個iOS從去年中旬開始的兩個項目,整體的框架是照著最普通的來的,基本一多半是用的MVC,因為是我自己做項目所以很多弊端出來了,沒有一個整體的規(guī)范,自己想到哪里寫到哪里,兩個項目在大半年的時間里不停的添加功能,以至于后期我自己去維護(hù)都有點難以下手,超過千行的控制器比比皆是,那兩個項目用的三方框架很多,很多三方不能達(dá)到我想要的效果所以當(dāng)時直接去改的人家的源碼(環(huán)信是其中之一,改過的環(huán)信已經(jīng)不能叫環(huán)信了叫亂信也不為過)。對于三方框架小改可以大改的話還是用runtime去修改比較好,關(guān)于runtime也研究過很長一段時間,等有時間了再來聊聊怎么把runtime學(xué)以致用來改善代碼質(zhì)量。

? ? ? ReactiveCocoa,是由Github開源的一個應(yīng)用于iOS和OS開發(fā)的新框架,網(wǎng)上有很多介紹它的文章,個人覺得最快讓你上手ReactiveCocoa之基礎(chǔ)篇?這篇作為入門很不錯,這里我就不介紹它的使用方法了,貼上今天剛寫的一個小程序

ReactiveCocoa一般情況下多與MVVM結(jié)合使用,它倆結(jié)合寫出的代碼層次分明,我們常用的很多軟件都是采用這種框架實現(xiàn)的,比如網(wǎng)易新聞客戶端


這是demo的整體架構(gòu) 寫之前先用cocoaPods 導(dǎo)入reactiveCocoa框架,導(dǎo)入方式很簡單網(wǎng)上有很多教程。作為MVVM必不可少的幾個必然是 View(DataView) ? ?Model(DataModel) ? ?ViewModel(DataViewModel) ? ?Controller(ViewController) ?

上面的Bar是我為了好寫下載的動畫 而用貝塞爾曲線寫的圖片下方的條狀圖

DataViewModel 里用來存放數(shù)據(jù)處理的,你的項目的一切網(wǎng)絡(luò)請求都可以放在這里

在.h里先定義一個 RACCommand 實例 在定義一個 用來存放請求到的數(shù)據(jù)的數(shù)組


.m的實現(xiàn) 在這個實例的SingnalBlock初始化方法內(nèi)部進(jìn)行數(shù)據(jù)請求操作

DataModel里主要是一個類方法來設(shè)置屬性值


DataView用來做視圖類的處理

在主控制器中只有少量的代碼

[[self.dataViewModel.fetchDataInfoCommand execute:nil] subscribeNext:^(id x) {

// 這里x 就是dataViewModel里返回的裝有數(shù)據(jù)的數(shù)組了

}completed:^{

}] ;

之后再把數(shù)據(jù)通過DataView的實例方法傳到dataView中進(jìn)行顯示



通過循環(huán)的方式顯示 這里enumerateObjectsUsingBlock 類似for in 但是比for in效率高一些


這些只是寫這個小demo的隨筆,我當(dāng)前公司做的項目整體用也是Reactivecocoa+ MVVM框架,以后會慢慢多寫點它的用法,這里只是冰山一角。

另外目前在學(xué)習(xí)Python中,會在簡書中記錄自己學(xué)習(xí)的點點滴滴

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,221評論 4 61
  • 我不是一個拖延癥重度患者,頂多算有時偷個懶,可是急性子的人遇到拖延癥患者,真的恨不得所有事都可以自己完成【原來急性...
    黃家小妞閱讀 662評論 0 0
  • 超級IP的生存模式一定是摒棄了物質(zhì)論,而是建立在關(guān)系論之上的。這是對傳統(tǒng)商業(yè)模式的突破,超級IP的實質(zhì)不再是...
    GTR001閱讀 323評論 0 0
  • 羅平–昆明–丙中洛–獨龍江–大理
    書天堂閱讀 445評論 1 1

友情鏈接更多精彩內(nèi)容