舊文新讀
關(guān)于RAC目前已經(jīng)有很多的公司在使用,但是從入門到熟悉還有很多坑需要跳,尤其是剛接觸,但是沒有任何實戰(zhàn)經(jīng)驗的。以下是我看別人的blog的總結(jié) 唐巧的blog
- 在團隊如何推廣RAC
不斷的review + 熟練的人指導(dǎo)
- 對人才的培養(yǎng)
有道再有術(shù) --->先灌輸思想,在傳授技術(shù) - RAC使用的場景
一、UI 操作,連續(xù)的動作與動畫部分,例如某些控件跟隨滾動。
二、網(wǎng)絡(luò)庫,因為數(shù)據(jù)是在一定時間后才返回回來,不是立刻就返回的。
三、刷新的業(yè)務(wù)邏輯,當(dāng)觸發(fā)點是多種的時候,業(yè)務(wù)往往會變得很復(fù)雜,用 delegate、notification、observe 混用,難以統(tǒng)一。這時用 RAC 可以保證上層的高度一致性,從而簡化邏輯上分層。
只要有通知的業(yè)務(wù)邏輯,RAC 都方便有效化解。
用 RACSubject + RACComand 來簡化和統(tǒng)一應(yīng)用的錯誤處理邏輯
雷純鋒:概括的說,應(yīng)該就是統(tǒng)一所有異步事件吧。
不適用的場景,與時間無關(guān)的,需要積極求解的計算,例如視圖的單次渲染
- 調(diào)試
關(guān)于調(diào)試,RAC 源碼下有 instruments 的兩個插件,方便大家使用。
signalEvents 這個可以看到流動的信號的發(fā)出情況,對于時序的問題可以比較好的解決。
diposable 可以檢查信號的 disposable 是否正常
MVVM tips
MVVM 是 MVC 模式的一種演進,它主要解決了 ViewController 過于臃腫帶來的不易維護和測試的問題。其中 ViewModel 的主要職責(zé)是處理數(shù)據(jù)業(yè)務(wù)邏輯并提供 View 所需的數(shù)據(jù),這樣 VC 就不用關(guān)心業(yè)務(wù),自然也就瘦了下來。ViewModel 只關(guān)心業(yè)務(wù)數(shù)據(jù)不關(guān)心 View,所以不會與 View 產(chǎn)生耦合,也就更方便進行單元測試。
View 是一個殼,它所呈現(xiàn)的內(nèi)容都需要由 ViewModel 來提供,而 View 又不與 ViewModel 直接溝通,這時就需要 ViewController 來做中間的協(xié)調(diào)者,另外還要協(xié)調(diào)VC間的交互。
ViewController 持有 View 和 ViewModel,當(dāng) VC 初始化時,會讓 ViewModel 去取數(shù)據(jù),簡單來說就是調(diào)用 VM 的某個獲取數(shù)據(jù)的方法。
- ViewController 盡量不涉及業(yè)務(wù)邏輯,讓 ViewModel 去做這些事情。
- ViewController 只是一個中間人,接收 View 的事件、調(diào)用
- ViewModel 的方法、響應(yīng) ViewModel 的變化。
- ViewModel 不能包含 View,不然就跟 View 產(chǎn)生了耦合,不方便復(fù)用和測試。
- ViewModel 之間可以有依賴。
- ViewModel 避免過于臃腫,不然維護起來也是個問題。
MVVM 并不復(fù)雜,跟 MVC 也是兼容的,只是多了一個 ViewModel 層,但就是這么一個小改動,就能讓代碼變得更加容易閱讀和維護,不妨試一下吧。