RxSwift简单使用
1. 前言
ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。
它尝试将原有的一些概念移植到 iOS/macOS 平台。
你可以在这里找到跨平台文档 ReactiveX.io。
KVO,异步操作 和 流 全部被统一成抽象序列。这就是为什么 Rx 会如此简单,优雅和强大。
2. 安装
通过CocoaPods安装
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'RxSwift', '~> 5.0'
pod 'RxCocoa', '~> 5.0'
end
# RxTests 和 RxBlocking 将在单元/集成测试中起到重要作用
target 'YOUR_TESTING_TARGET' do
pod 'RxBlocking', '~> 5.0'
pod 'RxTest', '~> 5.0'
end
替换 YOUR_TARGET_NAME
喔
3. Quick Start
例如下 Button 的 Target Action 场景下:
传统方法实现:
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
@objc func buttonTapped() {
print("button Tapped")
}
通过 Rx 来实现:
button.rx.tap
.subscribe(onNext: {
print("button Tapped")
})
.disposed(by: disposeBag)
你不需要使用 Target Action,这样使得代码逻辑清晰可见。
贴个完整的代码:
点击查看
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
private var disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let button = UIButton(frame: CGRect(x: 20, y: 20, width: 100, height: 20))
self.view.addSubview(button)
button.backgroundColor = .red
button.rx.tap
.subscribe(onNext: {
print("button Tapped")
})
.disposed(by: disposeBag)
}
}
参考链接:RxSwift中文文档
原编辑时间 2020-12-1
个性签名:时间会解决一切