- UI에 특화된 옵저버블
 
- UI바인딩에서 데이터 생산자 역할을 수행
 
- Binder와 반대
 
- 메인 스레드(스케줄러)에서만 실행 보장
 
- 에러 이벤트 전달 X
 
- 옵저버블이지만 구독시 새로운 시퀀스 발생X
- 모든 구독자가 동일한 시퀀스(share연산자와 동일하게 동작)
 
 
subscribe사용에 비해 코드가 간결해지며 메인 스케줄러 실행 보장 
Traits
ControlProperty
RxCocoa가 View를 extension으로 확장했을 때, 추가된 동일한 이름의 속성의 대부분의 형식
- 옵저버블, 옵저버 두가지 타입 모두 존재 (읽기, 쓰기)
 
- 에러 이벤트 전달받지도, 전달하지도 않음
 
- completed 이벤트는 컨트롤 제거 직전 전달
 
- 모든 이벤트는 메인 스케줄러에서 전달
 
- share(replay:1)과 동일한 방식
- 신규 구독자 추가 시 가장 최근에 전달된 이벤트 바로 전달
 
 
ControlEvent
이벤트를 옵저버블로 래핑한 속성
- 옵저버블타입 상속
 
- 에러 이벤트 전달X
 
- completed 이벤트는 컨트롤 제거 직전 전달
 
- 모든 이벤트는 메인 스케줄러에서 전달
 
- 가장 최근 이벤트를 리플레이 하지 않음
- 신규 구독자 추가 시 구독 이후 최신이벤트만 전달 받음
 
 
CocoaTouch 코드

RxCocoa 코드

Driver
Traits 의 일종
- 에러 메시지 전달 X
 
- 항상 메인 스케줄러에서 작업
 
- share(replay: 1, scope: .whileConnected) 와 동일하게 동작
 
- rx.tap 등에서 subscribe를 사용함에 따른 스케줄러 보장이 힘들어지는 문제를 해결해준다.
 
asDriver()을 옵저버 뒤에 추가해서 사용 
bind(to:) 대신 driver() 메소드 사용 

Signal