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.