明天的我會感謝今天努力過的自己
添加好了ReactiveCocoa依賴础淤,就該來學(xué)習(xí)如何使用它了。
查看Signal.xcplaygroundpage的輸出內(nèi)容
根據(jù)官方文檔的描述共螺,找到最下方的Playground
- 下載ReactiveCocoa倉庫
git clone https://github.com/ReactiveCocoa/ReactiveCocoa.git
- 檢索項目依賴
在項目根目錄下運行
2.1 第一種方法
script/bootstrap
2.2 第二種方法(安裝了carthage)
carthage checkout
利用ReactiveCocoa.xcworkspace打開下載好的ReactiveCocoa項目
-
分別選中ReactiveCocoa-Mac和Result-Mac,cmd + b進行build
選中ReactiveCocoa-Mac
選中Result-Mac -
打開ReactiveCocoa.playground,最終形成的目錄結(jié)構(gòu)如下
ReactiveCocoa項目目錄結(jié)構(gòu) -
打開Debug控制臺
顯示Debug控制臺 點擊目錄中的Signal羽利,看到控制臺輸出了很多打印的內(nèi)容
--- Subscription ---
Subscriber 1 subscribes to the signal
Send value `10` on the signal
Subscriber 1 received 10
Subscriber 2 subscribes to the signal
Send value `20` on the signal
Subscriber 1 received 20
Subscriber 2 received 20
...
Signal是什么?
- 一個signal所代表的signal類型序苏,是一系列能被觀察到的有時序的事件流手幢。
- Signal通常代表進行中的事件流,比如:通知忱详、用戶輸入等围来。像一份工作被執(zhí)行或者一份數(shù)據(jù)被接收,事件被傳遞給signal匈睁,并且被推送給所有的觀察者监透,所有的觀察者將會同時接收到這些事件。
- 如果想要使用某個對象的事件航唆,則必須成為該對象的signal的觀察者胀蛮。觀察一個信號不會有任何的副作用,可以這么理解糯钙,signal是完全由signal生產(chǎn)者驅(qū)動的粪狼,并且是基于推送的,(消費者)觀察者不會對這些signal的生命周期有任何影響超营。當(dāng)觀察一個信號時鸳玩,觀察者僅僅能夠估計事件的執(zhí)行順序,這個事件的執(zhí)行順序是由發(fā)送給signal的順序決定的演闭,而不能夠隨機訪問signal中的事件不跟。
- 能夠使用高階函數(shù)去操作signal,例如:filter米碰、map窝革、reduce,也可以同時操作多個signal吕座,例如zip虐译,這些高階函數(shù)僅僅只能在Next事件中生效。
- 一個signal的生命周期就是由一系列的Next事件組成吴趴。最終將會由一個終結(jié)事件作為結(jié)尾漆诽,這個終結(jié)事件可能是Failed,Completed或者Interrupted(有且只有其中一個)锣枝,終結(jié)事件沒有signal值厢拭,所以必須進行特殊處理。
這一篇基本上是翻譯官方的描述撇叁,下一篇起分析代碼供鸠,估計不會這么枯燥了