2020-10-13
2020-10-13 本文已影响0人
王纯杰cj
ReactiveCocoa 源码分析(一)
1.简介
ReactiveCocoa是一个基于函数响应式编程思想(Funcation Reactive Programming,简称FRP)的框架。由几个重要的部分组成,如下:
信号:例如RACSignal,他可以被订阅,订阅后进行逻辑处理或者数据传递。
订阅者:例如RACSubscriber,表示订阅者的意思。用于订阅和发送数据。它是一个协议,由具体的类实现。
清理者:例如RACDisposable,用于取消或者清理订阅者的资源。
2.基本流程分析
简单的流程,创建一个信号,对信号的订阅,信号的销毁
信号的创建以及订阅销毁1创建信号;通过[RACSignal createSignal:]方法创建信号 创建的信号为Signal的子类RACDynamicSignal 并保存传入的名为didSubscribe的Block
创建RACSignal子类信号(RACDynamicSignal) RACDynamicSignal(具体创建)2订阅信号: 创建RACSubscriber订阅者, 订阅者绑定了3个block:nextBlock,errorBlock,completedBlock
RACSubscriber3:响应信号:订阅者RACSubscriber订阅信号 [self subscribe:o]self代表的是RACDynamicSignal 执行didSubscribe这个block 执行订阅者RACSubscriber的sendNext方法
订阅信号的具体实现4信号销毁:RACDisposable销毁对象, 信号,订阅者,销毁对象在信号完成后都需要被销毁,在信号被订阅的时候 在subscribe:方法中真正的订阅者(RACPassthroughSubscriber对象)关联了信号,销毁对象.
RACPassthroughSubscriber