ReactiveCocoa - swift 學習筆記(二)初識Signal
明天的我會感謝今天努力過的自己
新增好了ReactiveCocoa依賴,就該來學習如何使用它了。
檢視Signal.xcplaygroundpage的輸出內容
根據官方文件的描述,找到最下方的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.playground,最終形成的目錄結構如下
-
開啟Debug控制檯
點選目錄中的Signal,看到控制檯輸出了很多列印的內容
--- 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通常代表進行中的事件流,比如:通知、使用者輸入等。像一份工作被執行或者一份資料被接收,事件被傳遞給signal,並且被推送給所有的觀察者,所有的觀察者將會同時接收到這些事件。
- 如果想要使用某個物件的事件,則必須成為該物件的signal的觀察者。觀察一個訊號不會有任何的副作用,可以這麼理解,signal是完全由signal生產者驅動的,並且是基於推送的,(消費者)觀察者不會對這些signal的生命週期有任何影響。當觀察一個訊號時,觀察者僅僅能夠估計事件的執行順序,這個事件的執行順序是由傳送給signal的順序決定的,而不能夠隨機訪問signal中的事件。
- 能夠使用高階函式去操作signal,例如:filter、map、reduce,也可以同時操作多個signal,例如zip,這些高階函式僅僅只能在Next事件中生效。
- 一個signal的生命週期就是由一系列的Next事件組成。最終將會由一個終結事件作為結尾,這個終結事件可能是Failed,Completed或者Interrupted(有且只有其中一個),終結事件沒有signal值,所以必須進行特殊處理。
這一篇基本上是翻譯官方的描述,下一篇起分析程式碼,估計不會這麼枯燥了
相關文章
- Swift學習筆記(二十三)——Swift泛型初識Swift筆記泛型
- ReactiveCocoa學習筆記React筆記
- os/signal學習筆記筆記
- 【Nginx學習筆記】-初識NginxNginx筆記
- JVM學習筆記——初識JVMJVM筆記
- LevelDB學習筆記 (1):初識LevelDB筆記
- Redis學習筆記(一)——初識RedisRedis筆記
- [寒假學習筆記](二)Python初學筆記Python
- Vue 學習筆記 (一) -- 初識 VueCli 3Vue筆記
- Java學習筆記--資料庫初識Java筆記資料庫
- 初識C語言(01)—學習筆記C語言筆記
- Swift學習日記--二Swift
- iOS學習筆記39 ReactiveCocoa入門iOS筆記React
- swift學習筆記《1》Swift筆記
- swift學習筆記《4》Swift筆記
- TCP學習筆記(二) 相識篇TCP筆記
- swift學習筆記《2》-swift語法Swift筆記
- swift學習筆記《3》-技巧Swift筆記
- Swift進階學習筆記Swift筆記
- Qt Creator 原始碼學習筆記01,初識QTCQT原始碼筆記
- 我的 golang 學習筆記系列四:反射初識Golang筆記反射
- iOS學習筆記42 Swift(二)函式和閉包iOS筆記Swift函式
- webpack學習(二)初識打包配置Web
- swift學習筆記《5》- 實用Swift筆記
- swift 學習筆記之陣列Swift筆記陣列
- swift 關於 toolbar 學習筆記Swift筆記
- Struts2學習筆記(一)初識Strut2筆記
- iOS逆向學習筆記 - 彙編(一) - 初識彙編iOS筆記
- MySQL事務學習筆記(二) 相識篇MySql筆記
- nginx學習(二):初識配置檔案Nginx
- 安卓初學基礎學習筆記安卓筆記
- Scala 學習筆記 (1):初見筆記
- iOS學習筆記43 Swift(三)類iOS筆記Swift
- Swift學習筆記(二十一)——字典Swift筆記
- 人臉識別學習筆記二:進階篇筆記
- ANFIS學習筆記(二)筆記
- activiti學習筆記二筆記
- Typescript學習筆記(二)TypeScript筆記