
https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Traits.md
RxSwift의 Observable에 contextual meaning을 제공 + 특정 usecase에서 활용되도록 구현한 문법적 슈가.
문법적 슈가이므로 Trait대신 Observable을 사용해도 아무 문제 없다.
Observable이 광범위하게 사용된다면, Trait은 특정 상황에서만 사용되는 Observable이다.
오늘 살펴볼 ContorlProperty와 ContorlEvent는 UI라는 특정 상황에서만 사용된돠
Trait은 Observable 시퀀스를 프로퍼티로 가지는 Wrapper 구조체이다.
struct Single<Element> {
let source: Observable<Element>
}
struct Driver<Element> {
let source: Observable<Element>
}
...
Trait에서 .asObservable()을 호출하면 다시 원본 Observable로 변환해준다.
Control Property, Control Event는 모두 rxCocoa에 구현되어 있는 Trait이다.
UI element의 property를 나타내는 Observable
Control Property는 최초의 UI value와 사용자가 트리거한 UI value change를 next로 받는다. 코드로 조작한 value change는 감지하지 못한다.
share(replay: 1) 로 작동controlProperty 가 메모리 해제될 때 complete된다error를 절대 내보내지 않는다MainScheduler.instance로 보낸다. subscribeOn(ConcurrentMainScheduler.instance) behavior)UI element의 event를 나타내는 Observable
controlEvent 가 메모리 해제될 때 complete된다error를 절대 내보내지 않는다MainScheduler.instance로 보낸다. subscribeOn(ConcurrentMainScheduler.instance) behavior)