RxSwift--RxSwift简介
文章目录
- 前言
- 1.ReactiveX
- 2.RxSwift
前言
说到RxSwift,不得不提ReactiveX,什么是ReactiveX?ReactiveX与RxSwift有什么关系?请看下文。
1.ReactiveX
ReactiveX 是 Reactive Extensions 的缩写,简写为Rx。官方定义为一个使用可观察数据流进行异步编程的API。
Rx不仅仅是一个编程接口,更是一种编程思想的突破。它拓展了观察者模式,使你能够自由组合多个异步事件,而不需要去关心线程,同步,线程安全,并发数据以及I/O阻塞。
Rx结合了观察者模式、操作符、迭代器模式、调度器及函数式编程的精华。
- 观察者模式 Observable:对某些数据流(很广,可以是一些事件等)进行处理,使其变成可观察对象(Observable)序列,这样观察者(observer)就可以订阅这些序列;
- 操作符 Operators:然而对于订阅者来说(observer)某些选项(items)并不是自己需要的(需要过滤),某些选项(items)需要转换才能达到自己的目的;
- 迭代模式 Iterator:使集合或者序列中的值可以进行遍历;
- 调度器 Scheduler:为了提升用户体验,或其它目的,有些操作需要放到特定的线程去执行,比如 UI 操作需要放到主线程,这就涉及到了调度器。
所以 Rx 可以这样概括,Rx = Observables + LINQ + Schedulers,其中 LINQ(Language Integrated Query)语言集成查询,比如那些操作符号。
Rx影响了许多其它的程序库和框架以及编程语言,几乎每种语言都有对应的Rx框架。如:
- Java: RxJava
- JavaScript: RxJS
- C#: Rx. NET
- C#(Unity): UniRx
- Scala: RxScala
- Clojure: RxClojure
- C++: RxCpp
- Lua: RxLua
- Ruby: Rx.rb
- Python: RxPY
- Go: RxGo
- Groovy: RxGroovy
- JRuby: RxJRuby
- Kotlin: RxKotlin
- Swift: RxSwift
- PHP: RxPHP
- Dart: RxDart
Rx模式特点:
- 创建:Rx可以方便的创建事件流和数据流;
- 组合:Rx使用查询式的操作符组合和变换数据流;
- 监听:Rx可以订阅任何可观察的数据流并执行操作;
- 函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态;
- 简化代码:Rx的操作符通通常可以将复杂的难题简化为很少的几行代码;
- 异步错误处理:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制;
- 轻松使用并发:Rx的Observables和Schedulers让开发者可以摆脱底层的线程同步和各种并发问题。
2.RxSwift
RxSwift是Rx家族的重要一员,作为Swift版本的函数响应式编程语言,它可以代替iOS系统的Target Action / 代理 / 闭包 / 通知 / KVO等。同时还提供网络、数据绑定、UI事件处理、UI的展示和更新、多线程等。
RxSwift 特点:
RxSwift作为Rx的一员,自然包含Rx的属性及优点;
- 简洁:简化了代码,使用较少的代码即可实现相同的功能;
- 清晰:声明都是不可变更的,而且代码高内聚,代码易读,易维护;
- 易用:它抽象的了异步编程,使我们统一了代码风格;
- 稳定:是完全通过单元测试的。
RxCocoa
RxCocoa是RxSwift的一个独立库,RxCocoa将UIKit中视图控件的属性值封装成Observable可监听序列,可以通过将他们与我们的观察者进行绑定来观察他们,也可以直接对他们进行观察,或者可以将两个空间相互绑定实现控件间的联动。完成与指定用户的响应式用户交互、响应式网络请求、绑定数据模型到UI控件等。
RxCocoa支持iOS、macOS等多种平台。类似于Java平台的RxNetty、Android平台的RxAndroid等。
参考:
https://github.com/ReactiveX/RxSwift
https://blog.csdn.net/mazy_ma/article/details/80303425
https://blog.csdn.net/longshihua/article/details/72801096
RxSwift--RxSwift简介相关推荐
- RxSwift技术路线与参考资料
RxSwift技术路线与参考资料 ## RxSwift简介 响应式编程 响应式编程(Reactive Programming)是一种通过异步和数据流来构建事务关系的编程思想.核心体现就是观察者和可被观 ...
- 翻译:RxSwift的历史以及概念详细解析
说明 RxSwift到底是什么?这是一个很好的定义: RxSwift是一个库,用于通过使用可观察的序列和功能样式运算符来组成基于异步和基于事件的代码,从而允许通过调度程序进行参数化执行. 听起来复杂吗 ...
- 开源项目分析(SwiftHub)Rxswift + MVVM + Moya 架构分析(一)第三方框架使用
文章目录 开源项目分析(SwiftHub)Rxswift + MVVM + Moya 架构分析(一)第三方框架使用 1. SwiftHub项目简介 1.1 SwiftHub项目UI 1.2 Swift ...
- 【RxSwift 实践系列 2/3】thinking in Rx- Create和Drive
---> 上节 [RxSwift 实践系列 1/3]为什么使用RxSwift RxSwift 是一种编程思想,不是一门语言,学习他最难的部分就是thinking in Reactive Prog ...
- 通过 Moya + RxSwift + Argo 完成网络请求
作者:@请叫我汪二 授权本站转载. 最近在新项目中尝试使用 Moya+RxSwift+Argo 进行网络请求和解析,感觉还阔以,再来给大家安利一波. Moya Moya 是一个基于 Alamofire ...
- mojito: 麻烦给我的爱人来一份 RxSwift
序 学过 Swift 的 同学都知道, RxSwift 宛如 周董的 mojito 开始微醺 再者上头 为什么要学习 RxSwift ? 卡蜜尔说过 优雅,永不过时 麻烦给我的爱人来一份 RxSwif ...
- Moya+ RxSwift+HandyJSON 优雅处理网络请求
前言 在移动端的开发中,网络请求是必不可少的.之前写过Alamofire的简单使用,但是一般开发中都会对这些第三库封装,然后使用,之前自己封装的demo也是借鉴了一些Moya的设计思路.今天就介绍一下 ...
- iOS、mac开源项目及库
1.用来生成 @3x 的图片资源对应的 @2x 和 @1x 版本,只要拖拽高清图到 @3x 的位置上,然后按Ctrl+Shift+A即可自动生成两张低清的补全空位.当然你也可以从 @2x 的图生成 @ ...
- ios学习 准备列表
2019独角兽企业重金招聘Python工程师标准>>> Skip to content This repository Pull requests Issues Gist Watch ...
最新文章
- Confluence 6 数据库表-系统信息(System information)
- Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法
- 为什么Spring Boot项目引入依赖的时候可以不指定依赖的版本号
- 了解systemctl和chkconfig的服务管理工具
- 工作108:vue里面wangEdit编辑器使用
- php oracle count,请教分析函数count
- Fast Intro To Java Programming (2)
- js 设计模式学习(1)
- mysql atlas 实现读写分离分担数据库压力
- xilinx sdk在Debug模式下根据地址在内存里观察值
- JavaScript高级教程——(19)构造函数、原型、原型链、继承
- 向日葵和teamviewer免费版的替代品RD远控。
- Origin多峰拟合
- python零基础教学plc_编程零基础应当如何开始学习 Python?
- 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个进度条动画效果~适合初学者~超简单~ |前端开发|IT软件
- 腾讯校招都会问些什么?| 五面腾讯(Java岗)经历分享
- HBuilder快捷键整理集合
- 小白必学的Ps火焰字制作教程
- order statistics(找最ith小数值)问题
- 基于51单片机的脉搏心率心跳血压体温测量检测仿真(仿真+原理图+源码+论文)
热门文章
- python scapy网络嗅探
- ZVS空载电流大及波形畸变问题
- MATLAB图像的两种模糊模式
- 【文献阅读】Remote Power Attacks on the Versatile Tensor Accelerator in Multi-Tenant FPGAs
- 流场可视化工程dlb-dynamicdr部署日志:阶段二:工程本地编译
- pycharm调试模式
- 2018最新vue.js2.0完整视频教程12套
- 关于QPS高并发,你了解多少?
- SaaS模式、技术与案例详解——第16章 SaaS模式可行性分析
- 汇编c 易语言编程软件,这些汇编用易语言怎么写?