我有一个视图控制器,它有一些信号,我想在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/

10-10 20:32