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

为什么需要RxSwift?
传统的方式下,我们处理异步事件常常会写大量的:
1、回调闭包(callback hell)。
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/