2017-12-29 34 views
0

私はいくつかの信号を持っているView Controllerを持っていて、その信号からの値をviewDidLoad()に観測したいと思っています。私は、ビューコントローラが死んでいるだろうときに信号を配置する必要があります:composite += ...ScopedDisposableとtake(使用中の間:...)の違いは何ですか?

override func viewDidLoad() { 
    super.viewDidLoad() 
    let composite = CompositeDisposable() 
    defer { 
     disposable = ScopedDisposable(composite) 
    } 
    composite += someSignal.take(during: self.reactive.lifetime).observeValues { ... } 
} 

は、私がコードでそうであるように、それは必要なScopedDisposableオブジェクトにviewModel.alertSignal.take(during: self.reactive.lifetime).observeValues ...の結果を追加していますか?またはtake(during: self.reactive.lifetime)と呼ぶだけで十分ですか?

答えて

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

私は個人的にはそのわずか少ないコード以来take(during:)を使用するprefere。

関連する問題