信号的传递本身是一个抽象概念,订阅者和被订阅者之间的绑定、以及信号的发送,都是通过执行共同的block(_didSubscribe和_next) 来完成的
信号创建,订阅,发送,取消其实都是block的传导,这篇文章说的比较详细
其中还说到了冷热信号的区别
RACSubject相关的操作会产生热信号
1)冷信号是一对一的,订阅者与被订阅者通过block绑定,没有订阅者,就没有被订阅者,有了订阅者代码执行,
被订阅者代码就会被完整地执行,所以冷信号给我们带来的是完整信号。
2)热信号的概念类似于Notification的概念,它不管某一个订阅者代码是否被执行,它都会去遍历订阅者数组,依次
执行被订阅者代码,如果你先到,你就可以“先拿到”较早的信号,如果你晚加入订阅者数组,你就只能被晚点遍历到,
接收到较晚的信号。
这里是一些RACSignal信号的常用处理方式介绍
leon0206.blog.csdn.net/article/det…
//高阶信号操作
美团:为什么RACSubject在做Map操作以后,需要完成事件才不会造成内存泄漏?
RAC的一些高级用法: