遇到的坑 (摘自 https://www.cnblogs.com/manji/p/4846591.html)
獨(dú)自學(xué)習(xí)RAC還是有一定的難度的,畢竟面對(duì)眾多RAC的api要想完全理解下來(lái)還是挺困難的。
而且剛開始不熟悉的情況下很難針對(duì)某些特定的場(chǎng)景,想出比較合理的RAC處理方式(這句話是盜用
別人的,但是我也深有體會(huì))。這里列一下我寫這個(gè)demo時(shí)遇到的幾個(gè)坑吧,希望能幫別人繞過這些
坑,也算是功德一件。
1、ViewModel里用來(lái)保存數(shù)據(jù)的數(shù)組,不能使用NSMutableArray。原因是RAC是基于KVO的,
而NSMutableArray的Add和Remove方法并不會(huì)給KVO發(fā)送通知,因此對(duì)NSMutableArray進(jìn)行
RACObserve時(shí),并不會(huì)達(dá)到我們想要的結(jié)果。(同理其他Mutable的也都不能用)
2、ViewModel里給items賦值時(shí),不能用_items=somearray,而是得用self.items。我開始
是想在viewmodel里定義一個(gè)readonly的items屬性(理論上也應(yīng)該是readonly的,因?yàn)?ViewController只負(fù)責(zé)從ViewModel拿數(shù)據(jù)而已),然后通過_items進(jìn)行賦值,但是訂閱了
viewmodel的items后死活收不到消息。我一直感覺這不科學(xué),也許是我的打開方式不對(duì),但是最終
都沒有解決。這里希望知道的人能不吝賜教,在下感激不盡。
3、實(shí)現(xiàn)可以cancel的http請(qǐng)求時(shí),不能用replay,replayLast,replayLazily。關(guān)于這3者
的區(qū)分可以https://www.cnblogs.com/zz-vv/p/4834042.html,我覺得分析的很詳細(xì)。