首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RAC(ReactiveCocoa)介绍(二)——map映射

RAC(ReactiveCocoa)介绍(二)——map映射

作者头像
我只不过是出来写写代码
发布2019-04-02 15:01:48
1.3K0
发布2019-04-02 15:01:48
举报

上一篇简单介绍了一下RAC,这次探究RAC中的map映射用法。

Map(映射) RAC中包含两种映射方法map、flattenMap,映射方法是将原信号中的内容映射成新的指定内容。 通过对比,从map的实现方法中可以看出是基于flattenMap方法的一层封装,但同时又有不同之处。

返回block(value)

从上图的实现方法中可以看出,flattenMap方法和map方法都有一个带参数value的block作为这个方法的参数。不同的是,flattenMap方法通过调用block(value)来创建一个新的方法。它可以灵活的定义新创建的信号。而map方法,将会创建一个和原来一模一样的信号,只不过新的信号传递的值变成了block(value) flattenMap作用:把原信号的内容映射成一个新信号,并return返回给一个RACStream类型数据。实际上是根据前一个信号传递进来的参数重新建立了一个信号,这个参数,可能会在创建信号的时候用到,也有可能用不到。

flattenMap实现

flattenMap返回值打印

进入flattenMap方法查看,可以发现是调用bind方法实现。而flattenMap中的block返回值,将作为bind中bindBlock返回值处理。 当订阅绑定信号时,生成bindBlock; 源信号发送内容时,会去调用bindBlock,而bindBlock内部就会调用flattenMap的block,把数据封装成RACSignal类型信号; flattenMap return返回的信号成为bindBlock中返回信号,当订阅bindBlock返回信号时,就会得到绑定信号的订阅者,将处理完成的信号内容send出来。

flattenMap内部实现

map作用:是将原信号的值自定义为新的值,不需要再返回RACStream类型,value为源信号的内容,将value处理好的内容直接返回即可。map方法将会创建一个一模一样的信号,只修改其value。

map实现

map返回值打印

总结一下,同样作为映射命令,在实际开发过程中,如果使用map命令,则block代码块中return的是对象类型;而flattenMap命令block代码块中return的是一个新的信号。

对于map与flattenMap区别的理解,参考于: https://blog.csdn.net/abc649395594/article/details/46552865

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档