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?