我研究Rxswift已有一段时间了,到目前为止,我已经能够将Rxswift应用于我的项目。但是我仍然不明白RxSwift如何管理内存资源,尤其是 Disposable 对象。例如:
func foo() {
let s = Observable.of(1).subscribe(onNext: { print($0) })
s.disposed(by: _disposeBag)
}
在上面的方法中,s是一个 Disposable 对象,据我了解,该对象一直存在,直到被处置为止(通过释放 _disposeBag 或调用 .dispose()直接在s)上,这意味着某物对s有很强的引用,但我不知道某物是什么是。
我一直在寻找有关此问题的文档,但到目前为止没有希望。有人可以指出我正确的方向吗?
先谢谢大家。
答案 0 :(得分:1)
当您调用dispose(by :)时,DisposeBag拥有对一次性对象的强大引用,并且假设DisposeBag由UIViewController保留,例如,当UIViewController被释放时,DisposeBag将被释放并在其deinit()函数中它会保留每一个一次性的东西,然后调用dispose()。
HTH