舊文新讀
關(guān)于RAC目前已經(jīng)有很多的公司在使用措拇,但是從入門到熟悉還有很多坑需要跳我纪,尤其是剛接觸,但是沒有任何實(shí)戰(zhàn)經(jīng)驗(yàn)的丐吓。以下是我看別人的blog的總結(jié) 唐巧的blog
- 在團(tuán)隊(duì)如何推廣RAC
不斷的review + 熟練的人指導(dǎo)
- 對(duì)人才的培養(yǎng)
有道再有術(shù) --->先灌輸思想浅悉,在傳授技術(shù) - RAC使用的場景
一、UI 操作券犁,連續(xù)的動(dòng)作與動(dòng)畫部分术健,例如某些控件跟隨滾動(dòng)。
二粘衬、網(wǎng)絡(luò)庫荞估,因?yàn)閿?shù)據(jù)是在一定時(shí)間后才返回回來,不是立刻就返回的稚新。
三勘伺、刷新的業(yè)務(wù)邏輯,當(dāng)觸發(fā)點(diǎn)是多種的時(shí)候褂删,業(yè)務(wù)往往會(huì)變得很復(fù)雜飞醉,用 delegate、notification屯阀、observe 混用缅帘,難以統(tǒng)一轴术。這時(shí)用 RAC 可以保證上層的高度一致性,從而簡化邏輯上分層钦无。
只要有通知的業(yè)務(wù)邏輯逗栽,RAC 都方便有效化解。
用 RACSubject + RACComand 來簡化和統(tǒng)一應(yīng)用的錯(cuò)誤處理邏輯
雷純鋒:概括的說铃诬,應(yīng)該就是統(tǒng)一所有異步事件吧祭陷。
不適用的場景,與時(shí)間無關(guān)的趣席,需要積極求解的計(jì)算兵志,例如視圖的單次渲染
- 調(diào)試
關(guān)于調(diào)試,RAC 源碼下有 instruments 的兩個(gè)插件宣肚,方便大家使用想罕。
signalEvents 這個(gè)可以看到流動(dòng)的信號(hào)的發(fā)出情況,對(duì)于時(shí)序的問題可以比較好的解決霉涨。
diposable 可以檢查信號(hào)的 disposable 是否正常
MVVM tips
MVVM 是 MVC 模式的一種演進(jìn)按价,它主要解決了 ViewController 過于臃腫帶來的不易維護(hù)和測試的問題。其中 ViewModel 的主要職責(zé)是處理數(shù)據(jù)業(yè)務(wù)邏輯
并提供 View 所需的數(shù)據(jù)笙瑟,這樣 VC 就不用關(guān)心業(yè)務(wù)楼镐,自然也就瘦了下來。ViewModel 只關(guān)心業(yè)務(wù)數(shù)據(jù)不關(guān)心 View往枷,所以不會(huì)與 View 產(chǎn)生耦合框产,也就更方便進(jìn)行單元測試。
View 是一個(gè)殼错洁,它所呈現(xiàn)的內(nèi)容都需要由 ViewModel 來提供秉宿,而 View 又不與 ViewModel 直接溝通,這時(shí)就需要 ViewController 來做中間的協(xié)調(diào)者,另外還要協(xié)調(diào)VC間的交互屯碴。
ViewController 持有 View 和 ViewModel描睦,當(dāng) VC 初始化時(shí),會(huì)讓 ViewModel 去取數(shù)據(jù)导而,簡單來說就是調(diào)用 VM 的某個(gè)獲取數(shù)據(jù)的方法忱叭。
- ViewController 盡量不涉及業(yè)務(wù)邏輯,讓 ViewModel 去做這些事情今艺。
- ViewController 只是一個(gè)中間人窑多,接收 View 的事件、調(diào)用
- ViewModel 的方法洼滚、響應(yīng) ViewModel 的變化。
- ViewModel 不能包含 View技潘,不然就跟 View 產(chǎn)生了耦合遥巴,不方便復(fù)用和測試千康。
- ViewModel 之間可以有依賴。
- ViewModel 避免過于臃腫铲掐,不然維護(hù)起來也是個(gè)問題拾弃。
MVVM 并不復(fù)雜,跟 MVC 也是兼容的摆霉,只是多了一個(gè) ViewModel 層豪椿,但就是這么一個(gè)小改動(dòng),就能讓代碼變得更加容易閱讀和維護(hù)携栋,不妨試一下吧搭盾。