Winter's House.

ReactiveCocoa与响应式编程(FRP)

字数统计: 528阅读时长: 1 min
2019/03/23 Share

响应式编程概述

是一种编程范式、思想,无法从源码方式获得答案,是一种抽象能力

原始模式:
输入设备->计算设备->输出设备
常用模式:
业务需求->模式->代码
面向对象(Objective-C)与面向过程(C)都属于命令式编程
命令式运算:寄存器的运算,改变寄存器的值,不表示相互关系
响应式编程:类似excel表格计算,当求和中某一个元素值改变,结果随之改变。一个对象随着其他对象改变而改变(如autolayout)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//基于语句的运算,状态量的运算
- (NSInteger)factorial1:(NSInteger)x {
int result = 1;
for (int i = 1; i < x; i++) {
result *= i;
}
return result;
}

//没有创建变量,描述的是一种运算,表达式的运算,非状态量的运算
- (NSInteger)factorial2:(NSInteger)x {
if (x == 1) {
return 1;
}
return x * [self factorial2:(x - 1)];
}

函数响应式编程和ReactiveCocoa是什么

函数响应式编程

满足函数式的一些特性
面向离散事件流
离散事件流操作
特性:闭包&高阶函数
惰性计算
不改变状态
递归

ReactiveCocoa

FRP在Cocoa框架下的实现
富含了Cocoa框架多种组件
提供基于时间变化的数据流的组合和变换

理论基础

理解基于时间变化的数据流

single

数组对比流

流在时间变化,视频或音频
数组空间的有序,无法判断时间间隔

流的操作

对值的操作
对数量的操作
对维度的操作
对时间间隔的操作

基础知识-核心组件

RACSteam

子类由RACSequence和RACSingal组成

RACSequence(空间数据流,类似数组、链表)

Pull-driver:看书,看不看,看多少由我决定
Data
基于惰性计算,大规模计算时对性能要求高

RACSingal(时间数据流)

Push-driver:看电视,不论我看不看一直播放
Event
离散的,性能消耗较小

single Subscriber Disposable三者关系

Scheduler

调度
代替GCD
异步与并发

框架适配工具

CATALOG
  1. 1. 响应式编程概述
  2. 2. 函数响应式编程和ReactiveCocoa是什么
    1. 2.1. 函数响应式编程
    2. 2.2. ReactiveCocoa
  3. 3. 理论基础
    1. 3.1. 理解基于时间变化的数据流
      1. 3.1.1. 数组对比流
      2. 3.1.2. 流的操作
  4. 4. 基础知识-核心组件
    1. 4.1. RACSteam
      1. 4.1.1. RACSequence(空间数据流,类似数组、链表)
      2. 4.1.2. RACSingal(时间数据流)
    2. 4.2. single Subscriber Disposable三者关系
    3. 4.3. Scheduler
    4. 4.4. 框架适配工具