RxSwift 响应式编程详解(001)
一、Rx是什么?
-
Rx
是ReactiveX
的缩写,是一个用观察者模式开发异步和基于事件编程的库。 -
Rx
可以简化异步编程方法,并提供更优雅更安全的数据绑定。让我们可以时刻有序地响应新的数据并且处理。 -
Rx
本身可以说是一种跨平台的标准,它有自己的社区论坛,不管是web
还是移动开发,都能用Rx
的思维和方法来完成你的工作。 -
作为一种跨平台标准,目前已经有基于Rx开发了许多不同语言的库,有 RxPHP, RxJava, RxKotlin,
Rx.NET,RxSwift...
,在此我们重点讲解的是
RxSwift
响应式编程
。 -
在这些不同语言的 Rx
库中,他们都有着相同的API
接口。因此即使在不同语言间使用
Rx
的方法,使用规则和接口调用的思维模式基本一样。
-
响应更加及时:对UI界面事件操作以及数据信息的获取,即属性值信息发生的改变,能够立即作出响应。 -
编程更加简洁:对于以前Even事件传递和代理方法做了统一处理,如 KVO 、 Timer 、 Dlelgate 、 targer-action 、 notification 等。 -
优雅绑定数据:实现数据的优雅绑定,特别是结合 MVVM 设计模式进行编程开发,那简直是完美结合。 -
编程更加安全:不用担心内存问题,他都做了统一销毁处理。例如以前方法创建计时器 Timer 还得在不用时做销毁动作,使用 RxSwift 后不用担心这种问题,它统一进行 DisposeBag() 的销毁处理。
手动安装:
1、在 GitHub地址下载: https://github.com/ReactiveX/RxSwift; 2、将源包中“ Rx.xcodeproj”拖拽到你的工程目录中; 3、添加 RxSwift.framework
、RxCocoa.framework
。
-
Cocoapod安装:
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'RxSwift' , '~> 5'
pod 'RxCocoa' , '~> 5'
end
# RxTest and RxBlocking make the most sense in the context of unit/integration tests
target 'YOUR_TESTING_TARGET' do
pod 'RxBlocking' , '~> 5'
pod 'RxTest' , '~> 5'
end-
Carthage安装:
github "ReactiveX/RxSwift" ~> 5.0
Package Manager 安装
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "RxTestProject",
dependencies: [
.package(url: "https://github.com/ReactiveX/RxSwift.git", from: "5.0.0")
],
targets: [
.target(name: "RxTestProject", dependencies: ["RxSwift", "RxCocoa"])
]
)
-
RxSwift : 不包含任何 Cocoa
或者UI
方面的类。 -
RxCocoa :是基于 RxSwift
针对于iOS
开发的一个库,它通过Extension
的方法给原生的比如UI
控件添加了Rx
的特性,使得我们更容易订阅和响应这些控件的事件。