RxSwift中的内存管理机制

时间:2018-11-14 09:14:15

标签: memory-management subscription disposable

我研究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有很强的引用,但我不知道某物是什么是。

我一直在寻找有关此问题的文档,但到目前为止没有希望。有人可以指出我正确的方向吗?

先谢谢大家。

1 个答案:

答案 0 :(得分:1)

当您调用dispose(by :)时,DisposeBag拥有对一次性对象的强大引用,并且假设DisposeBag由UIViewController保留,例如,当UIViewController被释放时,DisposeBag将被释放并在其deinit()函数中它会保留每一个一次性的东西,然后调用dispose()。

HTH