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)