Memory management RxSwift中的内存管理机制

Memory management RxSwift中的内存管理机制,memory-management,subscription,disposable,Memory Management,Subscription,Disposable,我学习Rxswift已经有一段时间了,到目前为止,我能够将Rxswift应用到我的项目中。然而,我仍然不明白RxSwift是如何管理内存资源的,尤其是一次性对象。例如: func foo() { let s = Observable.of(1).subscribe(onNext: { print($0) }) s.disposed(by: _disposeBag) } 在上面的方法中,s是一个一次性对象,据我所知,该对象一直存在,

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

func foo() {
            let s = Observable.of(1).subscribe(onNext: { print($0) })
            s.disposed(by: _disposeBag)
        }
在上面的方法中,s是一个一次性对象,据我所知,该对象一直存在,直到被释放为止(通过释放_disposeBag或直接在s上调用.dispose()),这意味着某个对象包含对s的强引用,但我不知道该对象是什么

我一直在寻找关于这件事的文件,但到目前为止没有希望。有人能给我指一下正确的方向吗


提前谢谢各位

当您调用disposed(by:)时,DisposeBag保留对一次性文件的强引用,并假设DisposeBag由UIViewController保留。例如,当UIViewController被解除分配时,DisposeBag将被解除分配,并在其deinit()函数中调用其保留的每个一次性文件的dispose()


HTH

这听起来很合理,你能给我发一份关于你答案的官方文件吗?“当一个一次性物品被出售时,它会对每一个添加的一次性物品调用dispose。”