RxSwift--RxSwift简介

本文介绍了ReactiveX的概念,强调其作为编程思想的突破,结合了观察者模式、操作符和调度器。接着详细阐述了RxSwift,作为Swift的函数响应式编程库,它简化代码、提高代码可读性和稳定性。RxCocoa作为RxSwift的一部分,使得与用户交互和UI绑定更加便捷。

在这里插入图片描述

前言

  说到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffersonGO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值