iOS/RxSwift

RxSwift) Hot Observables vs Cold Observables

Dev.Andy 2024. 4. 17. 22:02

머리말

Observables의 특징 따른 구분 (Hot vs Cold)

RxSwift의 Observables의 특징을 구분하여 설명할 때 흔히 Hot과 Cold로 구분하여 이를 다룬다. 아메리카노도 아니고 무슨 Hot과 Cold가...

이를 한번 비교해 보자.

본문

구분의 핵심

시퀀스에 대한 방출 시점 (→ 자원의 사용 여부)

Observable이 Hot인지 Cold인지 이를 구분하는 핵심은 아래와 같다.

Observable이 아이템에 대한 시퀀스를 언제 방출하는가?

여기서 짐작할 수 있는 따뜻하냐 차갑냐의 차이는, 이벤트의 방출은 곧 자원의 사용 (이벤트의 방출 → 열을 발생시킨다)의 여부 에서 착안한 것 같다.
공식 문서에서도 Use resources ("produce heat") 라 설명되어 있다. 여기서의 자원은, 시퀀스를 의미한다.

  Hot Observables Cold Observables
시퀀스인가? O O
자원의 사용 (이벤트의 방출) 어떠한 옵저버를 구독하든지 상관없이 자원을 소용한다 옵저버가 구독하기 전까지 자원을 사용하지 않는다.
예시 변수/프로퍼티/상수, 탭/마우스의 좌표
UI를 조절하는 변수 등
비동기 작업, HTTP 연결,
TCP 연결, 스트림
상태성 주로 상태적이다(stateful) 주로 비상태적이다(stateless)
옵저버의 관찰 범위 구독(subscribe) 이후의 시퀀스만 확인 가능 구독(subscribe) 이후에도 그 이전을 포함한 전체적인 시퀀스를 확인 가능
실제 예시 Subject Observable

 

 

 

참고 자료

RxSwift Documentation