[iOS/UIKit] RxSwift 용어정리

RxSwift를 학습하다보니 새로운 단어들이 너무 많아서 머릿속에서 정리가 잘 안됐었다.

 

RxSwift의 개념이나, 더 정리할 내용이 있는 단어에 대해선 필요하다면 별도의 글을 작성하고,

이번 글에서는  RxSwift의 핵심적인 단어들을 중심으로 한눈에 정리해보겠다.

 


Observable과 Observaer

  • `Observable`
    • 이벤트를 발생시키는 역할
    • 버튼을 탭하거나, 텍스트필드에 텍스트를 작성하는 등의 행위
  • `Observer`
    • 구독이라는 행위로 `Observable`을 계속 관찰하고 있음
    • `Observable`을 통해 신호를 받으면 즉, 이벤트가 전달되면 해당 이벤트를 처리하는 역할
    • 버튼을 눌렀을 때 화면 전환이 되도록 이벤트를 처리하는 등의 행위

Observaer의 이벤트 처리방식(onNext, onCompleted, onError)

  • `onNext`
    •  최신 데이터 전달 ➡ 이벤트 방출(Emit)
  • `onCompleted`
    • 이벤트 전달 완료 ➡ 완료 알림(Notification)
  • `onError`
    • 이벤트 전달 과정에서 에러 발생 ➡ 에러 알림(Notification)

구독 관련 용어 (subscribe, bind, drive, dispose)

  • `subscribe`
    • Next, Completed, Error이벤트 전부를 처리할 수 있는 구독 방식
    • 모든 이벤트를 다룰 수 있다는 점에서, `Subject`와 함께 쓰임
  • `bind`
    • Next이벤트만 처리할 수 있는 구독 방식
    • Next이벤트만 다룰 수 있다는 점에서 `Relay`와 함께 쓰임
  • `drive`
    • Next이벤트만 처리할 수 있는 구독 방식
    • 메인쓰레드에서의 실행을 보장  ➡ UI와 관련된 동작을 `drive`로 처리
    • 하나의 스트림을 공유한다는 특징이 있음  ➡ 기존의 `share()` 오퍼레이터를 사용하지 않아도 됨
    • Next이벤트만 다룰 수 있다는 점에서 `Relay`와 함께 쓰임
    • `asDriver`: `Observable`을 `Driver`타입으로 변경
      • `asDriver(onError...)`: `PublishRelay`를 `Driver`타입으로 변경하는 경우, 에러가 발생했을 경우 표시할 값이 없기 때문에 매개변수로 에러가 발생했을 경우의 기본값을 지정해줌
      • `asDriver()`: `BehaviorRelay`를 `Driver`타입으로 변경하는 경우, 기본값이 있기 때문에 별도의 매개변수를 쓰지 않음
  • `dispose`
    • `Observable`이 방출하는 이벤트를 받고싶지 않을 때, 구독을 취소하는 역할
    • 이벤트가 더이상 방출되면 안되는 시점에 메모리 누수를 방지하기 위함

Subject와 Relay

  • `Subject`와 `Relay`
    • `Observable`과 `Observer`의 역할을 모두 할 수 있는 역할
    • 즉, 이벤트를 발생하는 행위와 이벤트를 처리하는 행위를 모두 할 수 있음

 

  • `Subject`
    • 옵저버로써 Next, Completed, Error이벤트 전부를 받을 수 있음
    • 이러한 특징 때문에 `subscribe`와 함께 쓰임 
      • `PublishSubject`: 옵저버블로써 구독이 일어나기 전에 방출된(변경된) 이벤트를 받을 수 없음 / 초기값이 없음
      • `BeahviorSubject`: 옵저버블로써 구독이 일어나기 전에 가장 최근에 방출된(변경된)이벤트를 받을 수 있음 / 초기값이 있어야 함
  • `Relay`
    • 옵저버로써 Next이벤트만 받을 수 있음, 해당 이벤트를 `onNext` 대신 `accept`라고 칭함
    • 이러한 특징 때문에 `bind`, `drive`와 함께 쓰임 
      • `PublishRelay`: 옵저버블로써 구독이 일어나기 전에 방출된(변경된) 이벤트를 받을 수 없음 / 초기값이 없음
      • `BeahviorRelay`: 옵저버블로써 구독이 일어나기 전에 가장 최근에 방출된(변경된)이벤트를 받을 수 있음 / 초기값이 있어야 함

한 장으로 정리하기


※참고자료