ReactiveCocoa 小结

一、介绍

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 的子类RACSignalRACSequence来完成操作的
  • RACSignal,信号类,框架的核心类,可以订阅这个信号来收到回调,每次订阅都会收到一次block的回调. 可以自定义创建,也可以使用框架里面提供的子类、
  • RACSubscriber,订阅者类,遵守了RACSubscriber协议的对象都可以是订阅者,可以调用方法sendNext:sendError:sendComplete:, 调用后即回调对应的block。
  • RACDisposable, 订阅关系的取消和相关资源的清理, 注意不是清理信号对象。

RACSignal类的结构:
ReactiveCocoa 小结_第1张图片

RACSubscriber类的结构:
ReactiveCocoa 小结_第2张图片

RACDisposable类的结构:
ReactiveCocoa 小结_第3张图片

你可能感兴趣的:(ReactiveCocoa 小结)