我的 View Controller 有一些信号,我想在 viewDidLoad()
中观察来自该信号的值。我需要在 View Controller 失效时处理该信号:
override func viewDidLoad() {
super.viewDidLoad()
let composite = CompositeDisposable()
defer {
disposable = ScopedDisposable(composite)
}
composite += someSignal.take(during: self.reactive.lifetime).observeValues { ... }
}
是否有必要像我在代码中那样将 viewModel.alertSignal.take(during: self.reactive.lifetime).observeValues ...
的结果添加到 ScopedDisposable 对象:composite + = ...
?或者只调用 take(during: self.reactive.lifetime)
就足够了吗?
最佳答案
假设 disposable
是你的 ViewController 的一个属性,它和 take(during:)
做同样的事情所以你可以使用任何你喜欢的,但你不需要同时使用!
override func viewDidLoad() {
super.viewDidLoad()
let composite = CompositeDisposable()
defer {
disposable = ScopedDisposable(composite)
}
composite += someSignal.observeValues { ... }
}
或
override func viewDidLoad() {
super.viewDidLoad()
someSignal.take(during: self.reactive.lifetime).observeValues { ... }
}
我个人更喜欢使用 take(during:)
因为它的代码更少。
关于ios - 使用 ScopedDisposable 和 take(during : . ..) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025317/