初识RxSwift及使用教程 韩俊强的博客

简介: 什么是RxSwift? RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护 其他语言像C#, Java 和 JS 也有,Rx.

这里写图片描述

什么是RxSwift?

  • RxSwift是Swift函数响应式编程的一个开源库,由Github的ReactiveX组织开发、维护

  • 其他语言像C#, Java 和 JS 也有,Rx.Net、RxJava、RxJS

  • RxSwift的目的是让让数据/事件流和异步任务能够更方便的序列化处理,能够使用Swift进行响应式编程

  • 函数式响应编程?

  • RxSwift做了什么?

观察者模式

  • 什么KVO,通知, 甚至代理都是观察者模式,在设计模式中他可是一个重中之重的设计模式
  • 比如一个宝宝在睡觉,爸爸妈妈,爷爷奶奶总不能在那边一只看着吧?那样子太累了。他们该做啥事就做啥事呗,只要听到宝宝的哭声,他们就给宝宝喂奶就行了。这就是一个典型的观察者模式。
  • 宝宝是被观察者,爸爸妈妈等是观察者也称作订阅者,只要被观察者发出了某些事件比如宝宝哭声、叫声都是一个事件,通知到订阅者,订阅者们就可以做相应的处理工作

  • 在我们iOS开发中, 很多的事件监听都是通过观察者设计模式的

RxSwift做了什么

  • RxSwift把我们程序中每一个操作都看成一个事件

  • 比如一个TextField中的文本改变,一个按钮被点击,或者一个网络请求结束等,每一个事件源就可以看成一个管道,也就是sequence

  • 比如TextField,当我们改变里面的文本的时候,这个TextField就会不断的发出事件,从他的这个sequence中不断的流出,我们只需要监听这个sequence,每流出一个事件就做相应的处理。

  • 同理,Button也是一个sequence,每点击一次就流出一个事件。

Button事件流

理解Observable&Observer

理解Observable&Observer

RxSwift的优点

  • Composable 可组合,在设计模式中有一种模式叫做组合模式,你可以方便的用不同的组合实现不同的类
  • Reusable 代码可重用,原因很简单,对应RxSwift,就是一堆Obserable
  • Declarative 响应式的,因为状态不可变,只有数据变化
  • Understandable and concise 简洁,容易理解。
  • Stable 稳定,因为RxSwift写出的代码,单元测试时分方便
  • Less stateful “无”状态性,因为对于响应式编程,你的应用程序就是一堆数据流
  • Without leaks 没有泄漏,因为资源管理非常简单

使用心得

  • 时刻牢记,使用RxSwift,尽量把所有的任务(可以理解为方法)抽象成Obserable(序列)和Obserable创建者,监听者

  • 能用数据绑定的(bindTo和Driver)的就不要手动绑定

  • 一定要熟练RxSwift提供的操作符,要会自定义操作符

iOS开发者交流群:①446310206 ②446310206

代码地址: 加入我们学习

目录
相关文章
|
JSON 自然语言处理 编译器
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
前言包大小是衡量APP性能的一项重要指标,它直接影响用户的下载点击率(包太大不想下)、下载安装成功率(下载慢不用了)、APP卸载率(太占空间先删掉)。包大小的计算逻辑很简单,它是各种类型的文件占用磁盘大小相加。APP瘦身的技术却很复杂,代码文件的复杂度和编译器策略决定了可执行文件的大小,业务功能和工程架构决定了代码文件的复杂度。iOS APP瘦身,需要掌握的技能有XCode构建技术、LLVM编译器
5340 0
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
|
Go 开发工具 C语言
flutter项目打包.exe文件发布windows版
目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1
2435 0
flutter项目打包.exe文件发布windows版
|
6月前
|
人工智能 安全 开发工具
开发者效率神器|OpenClaw 本地AI一键部署,无需Python/命令行(Win11适配)
OpenClaw(小龙虾)是GitHub星标28W+的开源本地AI智能体,专为Windows 11优化,支持一键部署、零代码、全离线运行。无需联网、数据不出设备,可自动完成文件整理、浏览器操控、办公自动化等任务,10分钟轻松上手,开发者隐私与效率兼得。(239字)
816 0
|
6月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
51669 73
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
4月前
|
Web App开发 存储 缓存
《Chrome越用越卡别先怪设备,选对轻量扩展才是提效关键》
本文针对盲目堆砌Chrome扩展导致浏览器卡顿、隐私风险升高的普遍问题,结合长期实测筛选经验,从近百款插件中遴选出7款低资源占用、功能聚焦的轻量级扩展,覆盖广告拦截、标签休眠、缓存清理、批量链接处理等七大高频场景,拆解每款工具的核心优势与适用场景。同时分享了从权限范围、后台占用、功能边界三个维度筛选扩展的底层逻辑。
320 0
|
JavaScript Java 测试技术
基于微信小程序的水果销售系统+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的水果销售系统+springboot+vue.js附带文章和源代码设计说明文档ppt
318 0
|
前端开发 编译器 iOS开发
Clang代码覆盖率检测(插桩技术)
Clang的全称是C Language Family Frontend for LLVM,即基于LLVM的C系列语言的前端编译器。iOS应用的前端编译,即是采用Clang完成的。本篇文章,我们主要介绍Clang内置的一个简单的代码覆盖率检测功能,对于iOS开发来说,此功能更多用于Objective-C的方法插桩,为二进制重排提供支持,优化应用启动速度。但代码覆盖率检测功能并不仅仅只能应用与二进制重排,其本质是对于函数级、基本块级或代码边缘级插入回调,我们可以基于这一原理更灵活的实现所需要的功能。
1891 0
|
存储 自然语言处理 API
【网安AIGC专题11.1】12 CODEIE用于NER和RE:顶刊OpenAI API调用、CodeX比chatgpt更好:提示工程设计+控制变量对比实验(格式一致性、模型忠实度、细粒度性能)(中)
【网安AIGC专题11.1】12 CODEIE用于NER和RE:顶刊OpenAI API调用、CodeX比chatgpt更好:提示工程设计+控制变量对比实验(格式一致性、模型忠实度、细粒度性能)
375 0
|
iOS开发 C++
【C++知识点】文件操作(二)
【C++知识点】文件操作(二)
326 0
|
存储 安全 区块链
Jogger慢跑者跑鞋/链游项目系统开发(开发方案),Jogger跑鞋NFT链游模式系统开发详细案例及源码技术
  区块链是一种将数据区块按照时间顺序组合成的链式结构,是去中心化系统中各节点共享且共同维护的分布式数据账本,具体的:各节点由P2P组网方式相互连通和交互,受激励机制激励贡献自身算力,