我们什么时候应该在 RxSwift 中调用 addDisposableTo(disposeBag)?
When should we call addDisposableTo(disposeBag) in RxSwift?
我们创建了一个DisposeBag
和一个Observable
,订阅了Observable
然后是addDisposableTo(disposeBag)
,我知道DisposeBag
什么时候会deinit ,它会调用dispose()
释放资源,否则会导致内存泄漏。
如果Observable
发送Complete
或Error
即在有限时间内终止。当 Observable
在 DisposeBag
deinit 之前终止时,我是否需要调用 addDisposableTo(disposeBag)
? DisposeBag
是否在收到终止消息后自动释放订阅它的观察者?
let disposeBag = DisposeBag()
Observable.just("")
.subscribe { event in
print(event)
}
.addDisposableTo(disposeBag)
我应该明确地 .addDisposableTo(disposeBag)
吗?我认为在发送“”之后,Observable
将终止并释放观察者?
如果您确定 observable 以 确定性方式完成 - 例如在您的示例中使用 just
,或使用 take
、takeUntil
, 等等 -, 你可以选择不使用 DisposeBag。
您可能会收到编译器警告,它实际上很好地解释了这种行为以及如何解决它。但总的来说,如果您仍然使用 DisposeBag,它会更有前途。
Dispose 包用于 return 对 RX 的类似 ARC 的行为。释放 DisposeBag 时,它将对每个添加的一次性物品调用 dispose。
它用于处理您在闭包中传递的旧引用和不再需要的资源(并且显然未被使用):例如打开的 HTTP 连接、数据库连接或缓存。
所以如果我们有什么资源可以剩余,你应该调用它。
this article 中的更多内容。
我们创建了一个DisposeBag
和一个Observable
,订阅了Observable
然后是addDisposableTo(disposeBag)
,我知道DisposeBag
什么时候会deinit ,它会调用dispose()
释放资源,否则会导致内存泄漏。
如果Observable
发送Complete
或Error
即在有限时间内终止。当 Observable
在 DisposeBag
deinit 之前终止时,我是否需要调用 addDisposableTo(disposeBag)
? DisposeBag
是否在收到终止消息后自动释放订阅它的观察者?
let disposeBag = DisposeBag()
Observable.just("")
.subscribe { event in
print(event)
}
.addDisposableTo(disposeBag)
我应该明确地 .addDisposableTo(disposeBag)
吗?我认为在发送“”之后,Observable
将终止并释放观察者?
如果您确定 observable 以 确定性方式完成 - 例如在您的示例中使用 just
,或使用 take
、takeUntil
, 等等 -, 你可以选择不使用 DisposeBag。
您可能会收到编译器警告,它实际上很好地解释了这种行为以及如何解决它。但总的来说,如果您仍然使用 DisposeBag,它会更有前途。
Dispose 包用于 return 对 RX 的类似 ARC 的行为。释放 DisposeBag 时,它将对每个添加的一次性物品调用 dispose。
它用于处理您在闭包中传递的旧引用和不再需要的资源(并且显然未被使用):例如打开的 HTTP 连接、数据库连接或缓存。
所以如果我们有什么资源可以剩余,你应该调用它。
this article 中的更多内容。