1

我研究 Rxswift 已经有一段时间了,到目前为止,我能够将 Rxswift 应用到我的项目中。但是我仍然不明白 RxSwift 如何管理内存资源,尤其是Disposable对象。例如:

func foo() {
            let s = Observable.of(1).subscribe(onNext: { print($0) })
            s.disposed(by: _disposeBag)
        }

在上面的方法中, s 是一个Disposable对象,据我所知,该对象一直存在直到它被释放(通过释放_disposeBag或直接在 s 上调用.dispose()),这意味着某些东西持有强引用to s,但我不知道那是什么东西

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

提前谢谢各位。

4

1 回答 1

2

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

高温高压

于 2019-05-25T14:46:15.837 回答