一、介绍
ReactiveCocoa(简称RAC)
是由GitHub
团队开源的一套基于Cocoa
的并且具有FRP
特性的框架。
FRP(Functional Reactive Programming)
即响应式编程
。RAC
就是一个第三方库,使用它可以大大简化代码,提高开发效率。
整合了系统的各种UI响应事件、通知、代理、KVO等功能,提供了使用更方便更内聚的API,思路是通过信号的创建和订阅来完成消息传递的。扩展出了多个信号关联、信号变换、信号压缩后再传递等实用的功能。
二、基础理论
(1) 什么是信号?
RAC
的核心就是信号,即RACSignal
。信号--传递数据的工具,当数据变化时,信号就会发送改变的信息,以通知信号的订阅者执行方法。
(2) 什么是冷热信号?
1.Hot Observable
是主动的,尽管你并没有订阅事件,但是它会时刻推送,就像鼠标移动;而Cold Observable
是被动的,只有当你订阅的时候,它才会发布消息。
2.Hot Observable
可以有多个订阅者,是一对多,集合可以与订阅者共享信息;而Cold Observable
只能一对一,当有不同的订阅者,消息是重新完整发送。
3.RACSubject
及其子类是热信号。RACSignal
排除RACSubject
类以外的是冷信号。
三、类介绍
-
RACStream
是一个抽象类,定义了流的一些操作方法。框架里面主要是使用的RACStream
的子类RACSignal
和RACSequence
来完成操作的 -
RACSignal
,信号类,框架的核心类,可以订阅这个信号来收到回调,每次订阅都会收到一次block
的回调. 可以自定义创建,也可以使用框架里面提供的子类、 -
RACSubscriber
,订阅者类,遵守了RACSubscriber
协议的对象都可以是订阅者,可以调用方法sendNext:
、sendError:
、sendComplete:
, 调用后即回调对应的block。 -
RACDisposable
, 订阅关系的取消和相关资源的清理, 注意不是清理信号对象。