1. 为什么要使用 RxSwift?
我们先看一下 RxSwift 能够帮助我们做些什么:
Target Action
传统实现方法:
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)func buttonTapped() {
print("button Tapped")
}通过 Rx 来实现:
button.rx.tap
.subscribe(onNext: {
print("button Tapped")
})
.disposed(by: disposeBag)你不需要使用 Target Action,这样使得代码逻辑清晰可见。
代理
传统实现方法:
class ViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
}
}
extension ViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("contentOffset: \(scrollView.contentOffset)")
}
}通过 Rx 来实现:
你不需要书写代理的配置代码,就能获得想要的结果。
闭包回调
传统实现方法:
通过 Rx 来实现:
回调也变得十分简单
通知
传统实现方法:
通过 Rx 来实现:
你不需要去管理观察者的生命周期,这样你就有更多精力去关注业务逻辑。
多个任务之间有依赖关系
例如,先通过用户名密码取得 Token 然后通过 Token 取得用户信息,
传统实现方法:
通过 Rx 来实现:
这样你可以避免回调地狱,从而使得代码易读,易维护。
等待多个并发任务完成后处理结果
例如,需要将两个网络请求合并成一个,
通过 Rx 来实现:
这样你可用寥寥几行代码来完成相当复杂的异步操作。
那么为什么要使用 RxSwift ?
复合 - Rx 就是复合的代名词
复用 - 因为它易复合
清晰 - 因为声明都是不可变更的
易用 - 因为它抽象了异步编程,使我们统一了代码风格
稳定 - 因为 Rx 是完全通过单元测试的
Last updated
Was this helpful?