ReactiveCocoa是響應(yīng)式編程(FRP)在iOS中的一個(gè)實(shí)現(xiàn)框架,它的開源地址為:https://github.com/ReactiveCocoa/ReactiveCocoa# ;在網(wǎng)上看了幾篇文章,感覺理論講了很多,但是代碼還是看不太懂,于是自己把它github文檔上的一些使用的經(jīng)典示例實(shí)現(xiàn)了一下,項(xiàng)目中有需要時(shí)可以直接搬過去用,用的熟練了再讀源碼也比較容易理解。
例1. 監(jiān)聽對(duì)象的成員變量變化,當(dāng)成員變量值被改變時(shí),觸發(fā)做一些事情。
這種情況其實(shí)就是IOS KVO機(jī)制使用的場(chǎng)景,使用KVO實(shí)現(xiàn),通常有三個(gè)步驟:1,給對(duì)象的成員變量添加監(jiān)聽;2,實(shí)現(xiàn)監(jiān)聽回調(diào);3,取消監(jiān)聽;而通過RAC可以直接實(shí)現(xiàn),RAC的回調(diào)是通過block實(shí)現(xiàn)的,類似于過程式編程,上下文也更容易理解一些。
場(chǎng)景:當(dāng)前類有一個(gè)成員變量 NSString *input,當(dāng)它的值被改變時(shí),發(fā)送一個(gè)請(qǐng)求。
實(shí)現(xiàn):
[objc] view plain copy每次input值被修改時(shí),就會(huì)調(diào)用此block,并且把修改后的值做為參數(shù)傳進(jìn)來。
場(chǎng)景:在上面場(chǎng)景中,當(dāng)用戶輸入的值以2開頭時(shí),才發(fā)請(qǐng)求.
實(shí)現(xiàn):
[objc] view%20plain copy實(shí)現(xiàn):
[objc] view%20plain copy場(chǎng)景:滿足上面條件時(shí),直接發(fā)送請(qǐng)求
實(shí)現(xiàn):
[objc] view%20plain copy例3.%20類似于生成產(chǎn)-消費(fèi)
場(chǎng)景:用戶每次在TextField中輸入一個(gè)字符,1秒內(nèi)沒有其它輸入時(shí),去發(fā)一個(gè)請(qǐng)求。TextField中字符改變觸發(fā)事件已在例1中展示,這里實(shí)現(xiàn)一下它觸法的方法,把1秒延時(shí)在此方法中實(shí)現(xiàn)。
實(shí)現(xiàn):
[objc] view%20plain copyloggingSignal在每次被調(diào)用subscriibeNext:^(id x)或subscribeCompleted:^方法時(shí)(12行和17行),它創(chuàng)建進(jìn)傳進(jìn)的參數(shù)block_1就會(huì)被觸動(dòng)發(fā),而block_1中的sendNext:方法會(huì)調(diào)用subscriibeNext:^中對(duì)應(yīng)的block_2, 而block_1中的sendCompleted會(huì)調(diào)用subscribeCompleted:中對(duì)應(yīng)的block_3
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注