使用ScopedDisposable和take(期间:......)有什么区别?

问题描述 投票:0回答:1

我有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)就足够了?

ios swift reactive-cocoa reactive-swift
1个回答
1
投票

假设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 { ... }
}

我个人更喜欢使用qazxsw poi,因为它只是更少的代码。

© www.soinside.com 2019 - 2024. All rights reserved.