關(guān)于項(xiàng)目開發(fā)的設(shè)計(jì)模式弊攘,MVC、MVVP...已有很多文章和大神做研究姑曙,不再班門弄斧襟交。這里只是分享一點(diǎn)下自己在項(xiàng)目中遇到的問(wèn)題和心得體會(huì)。
兩個(gè)例子
1.看上圖伤靠,點(diǎn)擊用戶的語(yǔ)音播放按鈕捣域,播放音頻文件,然后開始滑動(dòng)宴合,滑動(dòng)期間顯示播放動(dòng)畫焕梅。解決方案,將Model添加BOOL屬性進(jìn)行標(biāo)記卦洽,然后cell里面添加kvo監(jiān)聽贞言,這樣每個(gè)model就和相應(yīng)的cell進(jìn)行了綁定,在播放開始或停止的時(shí)候改變BOOL屬性阀蒂,然后kvo來(lái)改變view層的UI變化该窗。
2.接著看上圖,點(diǎn)擊下載按鈕脂新,環(huán)型進(jìn)度條的view顯示下載進(jìn)度挪捕,解決的時(shí)候方案類似粗梭,同樣是給model添加progress屬性争便,將下載類回傳的float value 進(jìn)度賦值,這是cell同樣通過(guò)kvo來(lái)監(jiān)聽model得progress屬性變化断医。
總結(jié):以上是自己在項(xiàng)目中遇到的小問(wèn)題滞乙,然后說(shuō)一下自己的理解,一句話來(lái)概括就是view層的渲染需要依賴model層的屬性來(lái)改變鉴嗤,特別是在這種cell復(fù)用機(jī)制中斩启。
注意事項(xiàng):由于kvo在使用結(jié)束需要移除觀察者,而且因?yàn)閏ell是復(fù)用的醉锅,所以需要cell在賦值前先移除之前已經(jīng)添加的觀察者兔簇;曾經(jīng)使用過(guò)RACObserve(target,path)方法,但是不知道怎樣移除觀察者硬耍,歡迎大神們指點(diǎn)垄琐,另外對(duì)這種ReactiveCocoa框架來(lái)說(shuō),覺(jué)得更應(yīng)該關(guān)注的是它的實(shí)現(xiàn)機(jī)制经柴。畢竟在Debug的時(shí)候發(fā)現(xiàn)狸窘,一個(gè)api里面要點(diǎn)30多個(gè)方法。