rxSwift 에서 relay에 대해

임혜정·2024년 8월 8일
0

rxSwift의 핵심 포인트 : 구독-> 바인딩-> 방출

rxSwift에서 Observable은 시간에 따라 이벤트나 값의 시퀀스를 생성하는 객체다. '관찰 가능'한 연속적으로 전달되는 데이터 흐름을 말한다.

그리고 Relay는 rxSwift에서 제공하는 Observable의 종류인데 주로 UI이벤트 처리나 데이터 바인딩에 사용된다.

RxSwift - relay의 특징

  1. 에러를 발생시키지 않는다
    일반 observable과 달리 onError이벤트를 발생시키지 않아서 UI작업을 안전하게 할 수 있다

  2. 완료되지 않음
    .onCompleted 이벤트도 발생시키지 않기 때문에 지속적인 스트림 유지가 가능하다

  3. 현재 값을 가지고 있다.
    가장 최근에 방출된 값을 저장하고 있어서 언제든 접근할 수 있다.


두 가지 종류의 Relay

1. PublishRelay:
구독 이후에 발생하는 이벤트만 전달한다. 초기값이 없다.

let publishRelay = PublishRelay<String>()
publishRelay.accept("Hello")
publishRelay.subscribe(onNext: { value in
    print(value)
})
publishRelay.accept("World")
// 출력: World

2. BehaviorRelay:
구독 시점의 최신 값과 이후 발생하는 모든 이벤트를 전달한다. 반드시 초기값이 필요하다.

let behaviorRelay = BehaviorRelay(value: "Initial")
behaviorRelay.subscribe(onNext: { value in
    print(value)
})
behaviorRelay.accept("Updated")
// 출력: Initial
//      Updated

Relay가 주요 사용되는 점

  1. UI 업데이트 - 버튼 탭, 텍스트 필드 변경 등의 UI 이벤트 처리

  2. 데이터 바인딩 - 모델의 변경사항을 UI에 실시간으로 반영

  3. 상태 관리 - 앱의 전역 상태나 화면의 로컬 상태 관리

Relay를 사용할 때는 accept(_:) 메소드로 새 값을 전달 -> asObservable()을 통해 Observable로 변환하여 구독할 수 있다.

profile
오늘 배운걸 까먹었을 미래의 나에게..⭐️

0개의 댓글