一般 RxSwift 用于 MVVM, MVVM 常用功能就是双向绑定,Model 和 UI 的相互数据关联。
看下官方的 <->
在 RxSwift 的案例代码中,有一个 Operators.swift 文件,提供了一个 <-> 双向绑定操作符函数。
func <-> <T>(property: ControlProperty<T>, relay: BehaviorRelay<T>) -> Disposable {
let bindToUIDisposable = relay.bind(to: property)
let bindToRelay = property
.subscribe(onNext: { n in
relay.accept(n)
}, onCompleted: {
bindToUIDisposable.dispose()
})
return Disposables.create(bindToUIDisposable, bindToRelay)
}
代码逻辑很清晰,relay.bind(to: property), 模型绑定 UI, bind 是 RxCocoa 对 subscribe 的封装,换句话,UI 订阅了模型的事件。
property.subscribe, 模型订阅了 UI 的事件。
就这样,双向绑定完成了。
为什么不会陷入事件循环?
打个比方,如下代码,模型与 UI 绑定,点击按钮改模型,给模型传入一个事件。
(textFieldOne.rx.text <-

本文探讨了RxSwift在MVVM架构中的双向绑定应用,并深入研究了RxCocoa如何实现这一功能。通过官方示例,解释了避免事件循环的机制,以及RxCocoa在建立Target Action时的具体做法。
最低0.47元/天 解锁文章
1191

被折叠的 条评论
为什么被折叠?



