ReactiveCocoa 學(xué)習(xí)之路之史上最全攻略

ReactiveCocoa 學(xué)習(xí)之路之史上最全攻略

本文介紹的是史上最牛叉的ios開發(fā)新框架之一,最大的特點就是:直觀和靈活。直觀的代碼容易編寫、閱讀和維護,靈活的特性便于應(yīng)對變態(tài)的需求,當然最重要的還是高效。各路大神(陽神,喵神,唐神等等)都不吝嗇對它的贊美之詞,而且該框架已被美團等廣泛使用,好用的不要不要的..。本文主要介紹本人在學(xué)習(xí)ReactiveCocoa的時候的學(xué)習(xí)過程以及對一些學(xué)習(xí)資料的總結(jié),歡迎大家批評發(fā)炎。閑話不多吹下面進入正題。

什么是ReactiveCocoa?

ReactiveCocoa(其簡稱為RAC)是由Github 開源的一個應(yīng)用于iOS和OS X開發(fā)的新框架。RAC具有函數(shù)式編程和響應(yīng)式編程的特性。

是在iOS平臺上對FRP的實現(xiàn)。FRP的核心是信號,信號在ReactiveCocoa(以下簡稱RAC)中是通過RACSignal來表示的,信號是數(shù)據(jù)流,可以被綁定和傳遞。它主要吸取了.Net的 Reactive Extensions的設(shè)計和實現(xiàn)。

大神leezhong在博客中提到的比喻,可以更好地幫我們理解ReactiveCocoa.

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

為什么要用ReactiveCocoa

Native app有很大一部分的時間是在等待事件發(fā)生,然后響應(yīng)事件,比如等待網(wǎng)絡(luò)請求完成,等待用戶的操作,等待某些狀態(tài)值的改變等等,等這些事件發(fā)生后,再做進一步處理。 但是這些等待和響應(yīng),并沒有一個統(tǒng)一的處理方式。Delegate, Notification, Block, KVO, 常常會不知道該用哪個最合適。有時需要chain或者compose某幾個事件,就需要多個狀態(tài)變量,而狀態(tài)變量一多,復(fù)雜度也就上來了。為了解決這些問題,Github的工程師們開發(fā)了ReactiveCocoa。

其實用簡單的一句話來說就是: RAC統(tǒng)一了對KVO、UI Event、Network request、Async work的處理,因為它們本質(zhì)上都是值的變化(Values over time)。

ReactiveCocoa試圖解決什么問題呢

大神唐巧在他博客中這樣寫道主要解決三個問題:

1.傳統(tǒng)iOS開發(fā)過程中,狀態(tài)以及狀態(tài)之間依賴過多的問題。

2.傳統(tǒng)MVC架構(gòu)的問題:Controller比較復(fù)雜,可測試性差

3.提供統(tǒng)一的消息傳遞機制

詳情請查看大神博文在此就不再贅述

那么問題來了?如何學(xué)習(xí)ReactiveCocoa呢

網(wǎng)上教程很多,本人只是做了一下總結(jié),又初級到高級所需要看的一些文章。

初級 教程

對一個新手來說需要掌握最基本的API的使用。必看的一篇文章是RayWenderlich 網(wǎng)站提供的系列教程,其詳細程度非常牛逼。當然國內(nèi)大神們早就對該教程進行翻譯了 小伙伴們輕松了??!

第一部分地址:ReactiveCocoa入門教程——第一部分

第一部分地址:ReactiveCocoa入門教程——第一部分

進階教程

進階教程主要是進一步分析框架的結(jié)構(gòu)以及實現(xiàn)原理。

參考資料:

1.ReactiveCocoa github上的readme的中文翻譯

2.介紹ReactiveCocoa框架的每個組件的文章,對熟悉ReactiveCocoa API非常有幫助

3.美團網(wǎng)官方博客之RACSignal的Subscription深入分析

4.cocoaChina文章-Reactive Cocoa詳解

5.cocoaChina文章-ReactiveCocoa2實戰(zhàn)

6.cocoaChina文章-說說ReactiveCocoa 2

7.NSHipster上的文章-Reactive?Cocoa

8.國外牛人的一篇文章-Data-Driven iOS Development with ReactiveCocoa

9.國外牛人的一篇文章-Getting Started with ReactiveCocoa

10.NSHipster上一篇關(guān)于Recative cocoa的介紹-Reactive?Cocoa

11.cocoaChina文章-【長篇高能】ReactiveCocoa 和 MVVM 入門

12.ReactiveCocoa常用語法-這樣好用的ReactiveCocoa,根本停不下來

書籍

當然如果你比較豪,想買點書看看可以選擇這個--《Functional Reactive Programming on iOS》

源碼

1.使用ReactiveCocoa框架編寫的app源碼之《MVVM-IOS-Example》

2.使用ReactiveCocoa框架編寫的app源碼之《GroceryList》

3.使用ReactiveCocoa框架編寫的app源碼之《C-41》

視頻

ReactiveCocoa at MobiDevDay 2013視頻

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