[RxCocoa] Traits

RudinP·6일 전
0

Study

목록 보기
370/371
  • 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

profile
iOS 개발자가 되기 위한 스터디룸...

0개의 댓글