2017-12-29 10 views
0

Ich habe View-Controller, der ein Signal hat und ich möchte Werte von diesem Signal in viewDidLoad() beobachten. Ich brauche dieses Signal zu entsorgen, wenn View Controller tot sein:Welchen Unterschied zwischen ScopedDisposable und Take (während: ...)?

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

Ist es notwendig Ergebnis viewModel.alertSignal.take(during: self.reactive.lifetime).observeValues ... zu ScopedDisposable Objekt hinzufügen, wie ich in Code tun: composite += ...? Oder einfach anrufen take(during: self.reactive.lifetime) ist genug?

Antwort

1

Angenommen, disposable ist eine Eigenschaft Ihres ViewControllers, tut es das gleiche wie take(during:), so dass Sie verwenden können, was Sie wollen, aber Sie müssen nicht beide verwenden!

override func viewDidLoad() { 
    super.viewDidLoad() 
    let composite = CompositeDisposable() 
    defer { 
     disposable = ScopedDisposable(composite) 
    } 
    composite += someSignal.observeValues { ... } 
} 

oder

override func viewDidLoad() { 
    super.viewDidLoad() 
    someSignal.take(during: self.reactive.lifetime).observeValues { ... } 
} 

ich persönlich prefere take(during:) seit seinem weniger Code nur zu verwenden.

Verwandte Themen