ReactiveCocoa - swift 学习笔记(二)初识Signal

明天的我会感谢今天努力过的自己

添加好了ReactiveCocoa依赖,就该来学习如何使用它了。

查看Signal.xcplaygroundpage的输出内容

根据官方文档的描述,找到最下方的Playground

  1. 下载ReactiveCocoa仓库
git clone https://github.com/ReactiveCocoa/ReactiveCocoa.git
  1. 检索项目依赖
    在项目根目录下运行
    2.1 第一种方法
script/bootstrap

2.2 第二种方法(安装了carthage)

carthage checkout
  1. 利用ReactiveCocoa.xcworkspace打开下载好的ReactiveCocoa项目

  2. 分别选中ReactiveCocoa-Mac和Result-Mac,cmd + b进行build


    ReactiveCocoa - swift 学习笔记(二)初识Signal_第1张图片
    选中ReactiveCocoa-Mac

    ReactiveCocoa - swift 学习笔记(二)初识Signal_第2张图片
    选中Result-Mac
  3. 打开ReactiveCocoa.playground,最终形成的目录结构如下


    ReactiveCocoa - swift 学习笔记(二)初识Signal_第3张图片
    ReactiveCocoa项目目录结构
  4. 打开Debug控制台


    ReactiveCocoa - swift 学习笔记(二)初识Signal_第4张图片
    显示Debug控制台
  5. 点击目录中的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值,所以必须进行特殊处理。

这一篇基本上是翻译官方的描述,下一篇起分析代码,估计不会这么枯燥了

你可能感兴趣的:(ReactiveCocoa - swift 学习笔记(二)初识Signal)