概念
RAC全称-ReactiveCocoa,是GitHub上的一个开源框架,普遍称之为“函数的响应式编程”,想详细了解什么为什么叫做函数式响应编程,看 袁峥的这边文章https://www.jianshu.com/p/87ef6720a096
源码阅读
RAC主要的类
1、RACSignal (信号类)
①通过RACSignal一个信号,但创建出来的是冷信号
②通过订阅者订阅这个信号,让其变成热信号
③发送信号
2、RACDisposable,它可以帮助我们取消订阅,在信号发送完毕,失败都可以,就类似通知结束后销毁通知一样效果
3、RACSubscriber,是一个协议类,订阅者,发送信号
4、RACSubject:信号提供者,可以自己充当信号,自己可以发送信号,拥有RACSignal和RACSubscriber两者功能。
RACSignal简单用法,了解源码实现原理
1.创建信号
看看信号创建时源码是如何实现的,做了什么,点进creteSignal查看源码,1.png和2.png,就是源码的实现,主要就是创建了一个RACDynamicSignal(继承于RACSignal)的信号类,并且把传进去的didSubscribe代码块保存起来。
2.订阅信号
看看订阅信号时[signal subscribeNext:^(id x)] { } 源码是怎么实现。
订阅信号时主要做了两件事:
1.也是把传进去的block保存了.由3.png和4.png可以看出订阅信号时做的事
2.回调刚开始创建信号时的blcok,也就是 真正实现第3步骤:发送信号
看图5.png和6.png
3.发送信号
- (void)sendNext:(id)value {
@synchronized (self) {
void (^nextBlock)(