我有一个像这样的viewmode类:
class ViewMode {
let validateCountResult: Driver<Bool>
init(username: Driver<String>) {
validateCountResult = username
.flatMapLatest { username in
return // validate username
}
}
我有一个UIViewController
的子类,如下所示:
class ViewController : UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
let viewmode =
ViewMode(textfiled.rx.texttext.orEmpty.asDriver())
viewmode.validateCountResult.drive(onNext:{
// TODO Something
FuncA()
})
}
}
当viewDidload完成时,我相信viewmode也应该取消初始化。但是我看到绑定仍然存在,并且FuncA仍然被调用!
为什么会这样?
答案 0 :(得分:0)
了解绑定的最简单方法是将关系视为两个实体之间的连接: 生产者,产生价值。 接收者,处理来自生产者的值。 接收者无法返回值。这是使用RxSwift绑定时的一般规则。 绑定的基本功能是bind(to :),要将可观察对象绑定到另一个实体,要求接收者遵守ObserverType。
答案 1 :(得分:0)
您应该通过创建Disposable
来处置DisposeBag
类型。
如果不这样做,就不会保证viewController甚至会取消初始化,也不会丢弃您的可丢弃类型。他们通过您的ViewMode
一起创造了一个像人类一样的胎儿,所有三个对象都保留在内存中。
看看this文章,了解如何查找内存泄漏。