图解ReactiveCocoa
2016-11-30 09:40
141 查看
函数响应式编程
ReactiveCoCoa是iOS中实践函数响应式编程的利器。
函数式编程的特点是:
数据结构比较少,鼓励函数的重用,通过组合不同的函数行程高阶函数来满足需求
面向对象通过封装不确定因素来使得代码被人理解,而函数式编程通过减少不确定因素来使得代码被人理解
函数式的架构都是基于值不可变无副作用这个特点。
响应式编程特点是:
面向数据流和变化传播的编程范式
a=b+c, a的值随着b和c的更新而更新,就像Excel一样
可以显示的使用箭头来表示数据流向
图解RAC
ReactiveCocoa的源码阅读起来相对其他开源代码来说更不容易,因为需要很多函数式编程的思维。我喜欢把难以理解的概念在脑中用图构思出来,所以这篇文章将用图片来描述我脑中的RAC思想。
RACSigal
RACSigal是RAC中的一个重要的类,如果按照黑盒的理解,RACSigal是个魔法一般的箱子,它可以把传送给它的数据在箱子里面经过各种操作变换成另一种东西,然后再传递给下一个箱子。而它可以变换成好多东西,可以是一个数字,也可以是一个新的箱子(RACSignal)。
subcribe
map
map是箱子里面那坨乱七八糟的线,魔法一样地把输入到箱子里面的值变成另一个值,再包装成新的箱子,所有订阅这个新箱子的订阅者都将接受到这个新值。
flattenMap
flattenMap是RAC中非常多operator的基础函数。flattenMap把传入的值转变成一个个新的箱子,然后把这些箱子拆箱,再把值输出给订阅者。
ReactiveCoCoa是iOS中实践函数响应式编程的利器。
函数式编程的特点是:
数据结构比较少,鼓励函数的重用,通过组合不同的函数行程高阶函数来满足需求
面向对象通过封装不确定因素来使得代码被人理解,而函数式编程通过减少不确定因素来使得代码被人理解
函数式的架构都是基于值不可变无副作用这个特点。
响应式编程特点是:
面向数据流和变化传播的编程范式
a=b+c, a的值随着b和c的更新而更新,就像Excel一样
可以显示的使用箭头来表示数据流向
图解RAC
ReactiveCocoa的源码阅读起来相对其他开源代码来说更不容易,因为需要很多函数式编程的思维。我喜欢把难以理解的概念在脑中用图构思出来,所以这篇文章将用图片来描述我脑中的RAC思想。
RACSigal
RACSigal是RAC中的一个重要的类,如果按照黑盒的理解,RACSigal是个魔法一般的箱子,它可以把传送给它的数据在箱子里面经过各种操作变换成另一种东西,然后再传递给下一个箱子。而它可以变换成好多东西,可以是一个数字,也可以是一个新的箱子(RACSignal)。
subcribe
(RACDisposable *)subscribe:(id)subscriber;subscribe是订阅者向RACSigal建立起了订阅关系,通过一条虚线来表示订阅,同一个箱子可能会和多个订阅者连接,当箱子里面有值传出的时候,会向所有订阅者发送值。
map
map是箱子里面那坨乱七八糟的线,魔法一样地把输入到箱子里面的值变成另一个值,再包装成新的箱子,所有订阅这个新箱子的订阅者都将接受到这个新值。
flattenMap
flattenMap是RAC中非常多operator的基础函数。flattenMap把传入的值转变成一个个新的箱子,然后把这些箱子拆箱,再把值输出给订阅者。
相关文章推荐
- 基于S3C2440的嵌入式Linux驱动--SPI子系统图解
- RAID 0+1硬盘阵列组建图解及RAID 0+1和1+0的区别
- Linux下OpenSSL 安装详解 +图解
- WIN7服务器配置之MySQL数据库安装图解(适用于5.1,5.5的版本)
- 1.Socket网络编程之传递字符类型(图解与编码)
- token登录验证机制图解
- MyEclipse中生成Javadoc 实际操作图解
- [茶香人家:原创资料]岩茶基础名词图解
- Android自动化压力测试图解教程——Monkey工具
- 用VMware 8安装Ubuntu 12.04详细过程(图解)
- JavaEE 要懂的小事:一、图解Http协议
- [Git]Checkout命令和Reset命令图解
- 史上最详细Solaris 10上Oracle 10g安装步骤图解新手教程
- Windows下安装Atlassian-Jira-6.0.4并破解汉化(只需2步,另附图解)
- 图解JAVA对象的创建过程
- Android自动化压力测试图解教程——Monkey工具
- 二维数组的定义内存图解
- 图解 MyEclipse8.5 安装Fatjar&Fatjar使用方法
- Ubuntu Server 13.10安装配置图解教程