1.ReactiveCocoa簡介
1.ReactiveCocoa(簡稱為RAC),是由Github開源的一個應用于iOS和OS開發的新框架,Cocoa是蘋果整套框架的簡稱,因此很多蘋果框架喜歡以Cocoa結尾。
2.ReactiveCocoa作用
在我們iOS開發過程中,經常會響應某些事件來處理某些業務邏輯,例如按鈕的點擊,上下拉刷新,網絡請求,屬性的變化(通過KVO)或者用戶位置的變化(通過CoreLocation)。但是這些事件都用不同的方式來處理,比如action、delegate、KVO、callback等。
其實這些事件,都可以通過RAC處理,ReactiveCocoa為事件提供了很多處理方法,而且利用RAC處理事件很方便,可以把要處理的事情,和監聽的事情的代碼放在一起,這樣非常方便我們管理,就不需要跳到對應的方法里。非常符合我們開發中高聚合,低耦合
的思想。
3.編程思想
在開發中我們也不能太依賴于某個框架,否則這個框架不更新了,導致項目后期沒辦法維護,比如之前Facebook提供的Three20框架
,在當時也是神器,但是后來不更新了,也就沒什么人用了。因此我感覺學習一個框架,還是有必要了解它的編程思想
。
先簡單介紹下目前咱們已知的編程思想
。
3.1 面向過程
:處理事情以過程為核心,一步一步的實現。
3.2 面向對象
:萬物皆對象
3.3 鏈式編程思想
:是將多個操作(多行代碼)通過點號(.)鏈接在一起成為一句代碼,使代碼可讀性好。a(1).b(2).c(3)
鏈式編程特點
:方法的返回值是block,block必須有返回值(本身對象),block參數(需要操作的值)代表
:masonry框架。練習一
:模仿masonry,寫一個加法計算器,練習鏈式編程思想。
3.4 響應式編程思想
:不需要考慮調用順序,只需要知道考慮結果,類似于蝴蝶效應,產生一個事件,會影響很多東西,這些事件像流一樣的傳播出去,然后影響結果,借用面向對象的一句話,萬物皆是流。
代表
:KVO運用。練習二
:KVO底層實現。
3.5 函數式編程思想
:是把操作盡量寫成一系列嵌套的函數或者方法調用。
函數式編程特點
:每個方法必須有返回值(本身對象),把函數或者Block當做參數,block參數(需要操作的值)block返回值(操作結果)代表
:ReactiveCocoa。練習三
:用函數式編程實現,寫一個加法計算器,并且加法計算器自帶判斷是否等于某個值.
4.ReactiveCocoa編程思想
ReactiveCocoa結合了幾種編程風格:
函數式編程(Functional Programming)
響應式編程(Reactive Programming)
所以,你可能聽說過ReactiveCocoa被描述為函數響應式編程(FRP)框架。
以后使用RAC解決問題,就不需要考慮調用順序,直接考慮結果,把每一次操作都寫成一系列嵌套的方法中,使代碼高聚合,方便管理。
5.如何導入ReactiveCocoa框架
通常都會使用CocoaPods(用于管理第三方框架的插件)幫助我們導入。
PS:CocoaPods教程(http://code4app.com/article/cocoapods-install-usage)
練習四
:創建一個新的工程,演示下,框架的導入。
注意
:
podfile如果只描述pod 'ReactiveCocoa', '~> 4.0.2-alpha-1',會導入不成功
報錯信息
需要在podfile加上use_frameworks,重新pod install 才能導入成功。
PS:個人建議先研究純OC版本的RAC(2.5),可不加上use_frameworks
6.ReactiveCocoa常見類。
學習框架首要之處:個人認為先要搞清楚框架中常用的類,在RAC中最核心的類RACSiganl,搞定這個類就能用ReactiveCocoa開發了。