rac学习

作者: 夺光 | 来源:发表于2018-01-24 12:10 被阅读2次

一、bind操作,其实很简单就是做了一个信号,并且先执行当前信号的订阅,并且在当前订阅中调用订阅绑定参数的信号。假如生成的信号被订阅的时候,根据外联block生成一个信号的block,然后订阅当前的信号,并且把值传递给外联的生成信号的block生成对应的信号,这样外联的信号block就有了参数值,并且返回了对应的信号,这样的再次订阅这个信号,就可以得到处理后值的处理,然后sendnext给订阅者,最终订阅者接到了两个信号绑定的处理后的值。说白了就是让外联的block来帮助处理当前stream所发的值,得到的值发送给订阅者。

究其原因是bindblock这个函数,不如你bind的是一个signalofsignals那么这会返回一个信号,如果你单纯是一个signal,也会返回一个信号。而这个信号会被订阅到,所以就会出现降阶的现象。单纯的signal的值会被包装成一个信号,然后下面被订阅,并把值发送给订阅者。

盗图需要删的联系我

二、信号的订阅过程:

1. 创建一个信号其实就是创建一个RACDynamicSignal这个实现类的对象,在创建的时候create后面跟着的block存储起来,被叫做didsubscribe,这是信号的创建.

2. 当你订阅这个信号的时候,你subscribe:函数的参数就是一个RACSubscriber对象,这个对象封装了你的subscribeNext:的block参数,这个subcriber对象会被转化成RACPassthroughSubscriber这个类型的对象,这是在内部使用的subcriber对象,并且在在订阅的时候,会主动调用上面所说的didsubcribe block ,参数就是这个RACPassthroughSubscriber.

所以这样就形成一个闭环,信号生成的时候didsubcribe block创建,等待订阅的时候让信号去调用,调用的参数是一个subcriber.

三 、RACSubject是可以发送信号的,也可以订阅其他信号。

相关文章

  • RAC

    ReactiveCocoa入门 学习RAC小记-适合给新手看的RAC用法总结RAC稍深入-适合新手学习RAC iO...

  • 了解这些,学习RAC不再难

    了解这些,学习RAC不再难 了解这些,学习RAC不再难

  • RAC实战

    RAC实战 RAC实战 - 专题 - 简书 RAC(ReactiveCocoa)学习资源汇总~持续更新 - CSD...

  • RAC解读

    ReactiveCocoa(RAC)是Objective-C的响应式编程的框架,学习RAC框架,即是学习如何自学一...

  • 菜鸟用RAC基于AFNetworking 3.0网络的封装搭建记

    前言 这几天自己在学习RAC,学习了几天对RAC有了一定基础了解,如之前写的菜鸟开始学习ReactiveObjc运...

  • 2018-01-03 ReactiveCocoa @Weaki

    最近准备用RAC来写项目,在学习中发现RAC中经常会循环引用,RAC中的@Weakify非常好用,介绍给大家。 这...

  • rac学习

    一、bind操作,其实很简单就是做了一个信号,并且先执行当前信号的订阅,并且在当前订阅中调用订阅绑定参数的信号。假...

  • RAC学习

    RAC+MVVM www.jianshu.com/p/8d14f0465c5f

  • RAC学习

    RAC(ReactiveCocoa),函数响应式编程的框架,传统项目中,我们主要使用target-action、代...

  • RAC学习

    RAC导入 通常都会使用CocoaPods帮助我们导入,和其他第三方库不同的时,导入该库需要在Podfile中添加...

网友评论

      本文标题:rac学习

      本文链接:https://www.haomeiwen.com/subject/ipxuaxtx.html