明天的我会感谢今天努力过的自己
添加好了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值,所以必须进行特殊处理。
这一篇基本上是翻译官方的描述,下一篇起分析代码,估计不会这么枯燥了