rxSwift의 핵심 포인트 : 구독-> 바인딩-> 방출
rxSwift에서 Observable은 시간에 따라 이벤트나 값의 시퀀스를 생성하는 객체다. '관찰 가능'한 연속적으로 전달되는 데이터 흐름을 말한다.
그리고 Relay는 rxSwift에서 제공하는 Observable의 종류인데 주로 UI이벤트 처리나 데이터 바인딩에 사용된다.
에러를 발생시키지 않는다
일반 observable과 달리 onError이벤트를 발생시키지 않아서 UI작업을 안전하게 할 수 있다
완료되지 않음
.onCompleted 이벤트도 발생시키지 않기 때문에 지속적인 스트림 유지가 가능하다
현재 값을 가지고 있다.
가장 최근에 방출된 값을 저장하고 있어서 언제든 접근할 수 있다.
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
UI 업데이트 - 버튼 탭, 텍스트 필드 변경 등의 UI 이벤트 처리
데이터 바인딩 - 모델의 변경사항을 UI에 실시간으로 반영
상태 관리 - 앱의 전역 상태나 화면의 로컬 상태 관리
Relay를 사용할 때는 accept(_:)
메소드로 새 값을 전달 -> asObservable()
을 통해 Observable로 변환하여 구독할 수 있다.