Swift框架RxSwift
Swift框架RxSwift

Swift框架RxSwift

RxSwift 是一个用于响应式编程(Reactive Programming)的 Swift 框架,核心思想是以流(Stream)+ 响应(Reactive)的方式来处理异步事件和数据变化。

为什么需要RxSwift?

传统的方式下,我们处理异步事件常常会写大量的:

1、回调闭包(callback hell)。

2、NotificationCenter

3、Delegate / KVO

4、GCD / DispatchQueue。

这些方式会导致逻辑复杂、嵌套深、不易管理。

而 RxSwift 提供了统一的方式,把事件都看作 Observable 数据流,通过链式组合和响应式订阅进行处理。

核心概念

1、Observable:可观察对象(事件流),比如用户输入、网络响应、定时器等。

2、Observer / subscribe:观察者(订阅者),监听 Observable 中的事件。

3、DisposeBag:管理订阅生命周期,避免内存泄漏。

4、Operators:对事件流进行操作(如 map、filter、flatMap)。

5、Subject:既是 Observable 又是 Observer,适合桥接不同数据流。

6、Schedulers:控制在哪个线程订阅、在哪个线程监听。

使用示例

1、不使用RxSwift,实现按钮点击事件处理:

button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)

2、使用 RxSwift,实现按钮点击事件处理:

button.rx.tap
    .subscribe(onNext: {
        print("Button tapped")
    })
    .disposed(by: disposeBag)

常见场景

1、UI 绑定(输入框绑定按钮状态)。

2、表单验证。

3、网络请求链式操作(如请求完成再请求下一个)。

4、表格/列表数据绑定(RxDataSources)。

5、状态管理(MVVM 架构)。

RxSwift 生态系统

1、RxCocoa:封装 UIKit 组件,让按钮、文本框等支持响应式。

2、RxAlamofire:网络请求响应式封装。

3、RxDataSources:表格/列表响应式数据源管理。

4、RxRelay:替代传统 Subject,更安全。

总结

RxSwift拥有统一事件流处理,丰富 Operator 和链式组合,适合复杂交互、MVVM 架构。

但是学习曲线较陡峭,属于第三方库,增加依赖和语法复杂度。

如果有想要学习RxSwift的朋友,可以看这一篇reddit的讨论文章《Status of RxSwift (and UIKit) in 2023 in current market Reddit》,是否适合自己学习。

我目前开发的iOS和macOS都没有必须使用RxSwift的场景,也许RxSwift在实际项目中更合适?所以,没有学习或接触过RxSwift。

与RxSwift相对的就是苹果官方的Combine框架,支持iOS 13+或macOS等平台。如果想要实现iOS 12及以前的版本,可能RxSwift框架更是否,否则推荐使用苹果官方的Combine框架。

相关文章

1、RxSwift:https://github.com/ReactiveX/RxSwift

2、ReactiveX/RxSwift: Reactive Programming in Swift GitHub https://github.com › ReactiveX › RxSwift:https://github.com/ReactiveX/RxSwift

3、Status of RxSwift (and UIKit) in 2023 in current market Reddit · r/iOSProgramming 60+ 条评论 · 1年前:https://www.reddit.com/r/iOSProgramming/comments/16unga4/status_of_rxswift_and_uikit_in_2023_in_current/

4、Apple处理异步任务的Combine框架:https://fangjunyu.com/2024/12/01/apple%e5%a4%84%e7%90%86%e5%bc%82%e6%ad%a5%e4%bb%bb%e5%8a%a1%e7%9a%84combine%e6%a1%86%e6%9e%b6/

5、Swift管理多线程任务框架GCD:https://fangjunyu.com/2024/11/02/swift%e7%ae%a1%e7%90%86%e5%a4%9a%e7%ba%bf%e7%a8%8b%e4%bb%bb%e5%8a%a1%e6%a1%86%e6%9e%b6gcd/

6、iOS代理类AppDelegate:https://fangjunyu.com/2025/05/20/ios%e4%bb%a3%e7%90%86%e7%b1%bbappdelegate/

7、Swift KVO (Key-Value Observing)机制:https://fangjunyu.com/2025/04/06/swift-kvo-key-value-observing%e6%9c%ba%e5%88%b6/

8、iOS通知机制NotificationCenter:https://fangjunyu.com/2025/03/01/ios%e9%80%9a%e7%9f%a5%e6%9c%ba%e5%88%b6notificationcenter/

9、Swift闭包的三种形式以及理解闭包的嵌套函数:https://fangjunyu.com/2024/10/23/swift%e9%97%ad%e5%8c%85%e7%9a%84%e4%b8%89%e7%a7%8d%e5%bd%a2%e5%bc%8f%e4%bb%a5%e5%8f%8a%e7%90%86%e8%a7%a3%e9%97%ad%e5%8c%85%e7%9a%84%e5%b5%8c%e5%a5%97%e5%87%bd%e6%95%b0/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注