關(guān)于閱讀RAC相關(guān)blog的總結(jié)

舊文新讀

關(guān)于RAC目前已經(jīng)有很多的公司在使用,但是從入門到熟悉還有很多坑需要跳,尤其是剛接觸,但是沒有任何實戰(zhàn)經(jīng)驗的。以下是我看別人的blog的總結(jié) 唐巧的blog

  1. 在團隊如何推廣RAC
不斷的review + 熟練的人指導(dǎo)
  1. 對人才的培養(yǎng)
    有道再有術(shù) --->先灌輸思想,在傳授技術(shù)
  2. 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)的,需要積極求解的計算,例如視圖的單次渲染

  1. 調(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ù)的方法。

  1. ViewController 盡量不涉及業(yè)務(wù)邏輯,讓 ViewModel 去做這些事情。
  2. ViewController 只是一個中間人,接收 View 的事件、調(diào)用
  3. ViewModel 的方法、響應(yīng) ViewModel 的變化。
  4. ViewModel 不能包含 View,不然就跟 View 產(chǎn)生了耦合,不方便復(fù)用和測試。
  5. ViewModel 之間可以有依賴。
  6. ViewModel 避免過于臃腫,不然維護起來也是個問題。

MVVM 并不復(fù)雜,跟 MVC 也是兼容的,只是多了一個 ViewModel 層,但就是這么一個小改動,就能讓代碼變得更加容易閱讀和維護,不妨試一下吧。

?著作權(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)容

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