RxSwift系列—基本概念
2020/12/2 20:24:49
本文主要是介绍RxSwift系列—基本概念,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、基本概念
1.1、函数响应式编程
1.1.1 函数式
函数式编程简称FP(Functional Programming)
,函数式编程就是一种抽象程度很高的编程范式,它将计算机运算看做是数学中函数的计算,而纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是:允许把函数本身作为参数传入另一个函数,同时还允许返回一个函数!
函数表达式: y = f(x) —> x = f(x) —> y = f(f(x))
常规需求例子,感受函数式的舒服!
- 对于数组
[1,2,3,4,5,6,7,8,9,10]
,首先获取> 2
的数字, - 获取到的数字之后 + 1,
- 再输出所有数字中的偶数
let array = [1,2,3,4,5,6,7,8,9,10] for num in array{ if num > 2{ let number = num + 1 if (number % 2 == 0) { print(number) } } }
- 上面的代码嵌套层次之深,我觉得已经非常恶心
- 代码的可读性也是非常差的
- 代码复用性较低
- 维护以及代码构建成本太高,这样就成了函数式出现的必要性
let array = [1,2,3,4,5,6,7,8,9,10] array.filter{ $0 > 2} .filter{ ($0+1) % 2 == 1} .forEach { print($0) }
- 代码层次非常清晰
- 代码可读性高
- 代码复用性高
- 代码简洁,直接面向开发需求
1.1.2 响应式
对象对某一数据流变化做出响应的这种编码方式称为响应式。
例如我们在爱奇艺平台观看视频,我们只需要在某一个时刻订阅了这个视频,后面平台自媒体运营者不断更新视频,我们随着时间也能自定接受推送,这就是响应
在iOS开发中我们经常会响应一些事件button、tap、textField、textView、notifaction、KVO、NSTimer
等等这些,都需要做响应监听,响应后都需要在对应的响应事件中去做处理,而原生开发中,触发对象与响应方法是分离的,如button
的初始化和点击响应方法是分离的。功能代码与逻辑代码分析,导致很多比较恶心的感觉!
blingbling, blingbling, blingbling!
RxSwift 闪亮登场
1.2、RxSwift简介
RxSwift
是 ReactiveX
家族的重要一员, ReactiveX
是 Reactive Extensions
的缩写,一般简写为 Rx
。ReactiveX
官方给Rx
的定义是:Rx是一个使用可观察数据流进行异步编程的编程接口。
ReactiveX
不仅仅是一个编程接口,它是一种编程思想的突破,它影响了许多其它的程序库和框架以及编程语言。它拓展了观察者模式
,使你能够自由组合多个异步事件
,而不需要去关心线程
,同步,线程安全
,并发数据以及I/O阻塞
。
RxSwift
是 Rx
为 Swift
语言开发的一门函数响应式编程语言, 它可以代替iOS系统的 Target Action
/ 代理
/ 闭包
/ 通知
/ KVO
,同时还提供网络
、数据绑定
、UI事件处理
、UI的展示和更新
、多线程
……
鉴于Swift
日渐增长的影响力,ios开发者不可避免的要学习和使用Swift
这门语言进行编程开发。而RxSwift
对使用Swift
的帮助有如下几点:
Swift
为值类型,在传值与方法回调上有影响,RxSwift
一定程度上弥补Swift
的灵活性
RxSwift
使得代码复用性较强,减少代码量RxSwift
因为声明都是不可变更,增加代码可读性RxSwift
使得更易于理解业务代码,抽象异步编程,统一代码风格RxSwift
使得代码更易于编写集成单元测试,增加代码稳定性
这篇关于RxSwift系列—基本概念的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-10-05Swift语法学习--基于协议进行网络请求
- 2022-08-17Apple开发_Swift语言地标注释
- 2022-07-24Swift 初见
- 2022-05-22SwiftUI App 支持多语种 All In One
- 2022-05-10SwiftUI 组件参数简写 All In One
- 2022-04-14SwiftUI 学习笔记
- 2022-02-23Swift 文件夹和文件操作
- 2022-02-17Swift中使用KVO
- 2022-02-08Swift 汇编 String array
- 2022-01-30SwiftUI3.0页面反向传值