iOS-ReactiveCocoa

什么是ReactiveCocoa?

ReactiveCocoa(其簡稱為RAC)是由Github 開源的一個應(yīng)用于iOS和OS X開發(fā)的新框架。RAC具有函數(shù)式編程(FP)和響應(yīng)式編程(RP)的特性。它主要吸取了.Net的 Reactive Extensions的設(shè)計和實現(xiàn)。

函數(shù)式編程概念

或許你不知道函數(shù)式編程的概念,作為iOS開發(fā)者你應(yīng)該使用過,如下:

make.centerY.equalTo(self.view).offset(100);

函數(shù)式編程總結(jié):
如果想再去調(diào)用別的方法,那么就需要返回一個對象;
如果想用()去執(zhí)行,那么需要返回一個block;
如果想讓返回的block再調(diào)用對象的方法,那么這個block就需要返回一個對象(即返回值為一個對象的block)。

響應(yīng)式編程的概念

在網(wǎng)上流傳一個非常經(jīng)典的解釋`響應(yīng)式編程的概念`
在程序開發(fā)中:
a = b + c
賦值之后 b 或者 c 的值變化后,a 的值不會跟著變化
響應(yīng)式編程,目標(biāo)就是,如果 b 或者 c 的數(shù)值發(fā)生變化,a 的數(shù)值會同時發(fā)生變化;

關(guān)于ReactiveCocoa的比喻

“能夠把信號想象成水龍頭,僅僅只是里面不是水,而是玻璃球(value),直徑跟水管的內(nèi)徑一樣,這樣就能保證玻璃球是依次排列。不會出現(xiàn)并排的情況(數(shù)據(jù)都是線性處理的,不會出現(xiàn)并發(fā)情況)。水龍頭的開關(guān)默認(rèn)是關(guān)的。除非有了接收方(subscriber),才會打開。
這樣僅僅要有新的玻璃球進來,就會自己主動傳送給接收方。
能夠在水龍頭上加一個過濾嘴(filter)。不符合的不讓通過,也能夠加一個修改裝置,把球改變成符合自己的需求(map)。
也能夠把多個水龍頭合并成一個新的水龍頭(combineLatest:reduce:),這樣僅僅要當(dāng)中的一個水龍頭有玻璃球出來,這個新合并的水龍頭就會得到這個球。

ReactiveCocoa 主要解決了以下這些問題:

  • UI數(shù)據(jù)綁定

UI控件通常需要綁定一個事件,RAC可以很方便的綁定任何數(shù)據(jù)流到控件上。

  • 用戶交互事件綁定

RAC為可交互的UI控件提供了一系列能發(fā)送Signal信號的方法。這些數(shù)據(jù)流會在用戶交互中相互傳遞。

  • 消息傳遞機制的大統(tǒng)一

OC中編程原來消息傳遞機制有以下幾種:Delegate,Block Callback,Target-Action,Timers,KVO,objc上有一篇關(guān)于OC中這5種消息傳遞方式改如何選擇的文章Communication Patterns,推薦大家閱讀?,F(xiàn)在有了RAC之后,以上這5種方式都可以統(tǒng)一用RAC來處理。

參考文獻:http://ios.jobbole.com/90676/

最后編輯于
?著作權(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)容