我有一个视图控制器,它有一些信号,我想在viewDidLoad()
中观察该信号的值。我需要在视图控制器死机时处理该信号:
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对象中?或者只要打电话就够了? 最佳答案
假设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(在…期间)有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48025317/