BehaviorRelay vs BehaviorSubject

  • BehaviorRelay
    • 항상 초기값을 가진다
    • 종료이벤트를 지원하지 않는다. (onComplete, onError)
    • 현재값을 직접 읽을 수 있는 value 속성을 제공한다.
      • 문제가 될 수 있음 (값을 구독을 통하지 않고 가져오면)
    • 장단점
      • 장점
        • 상태관리가 쉽고 간편하다. value를 통해 값에 직접 접근이 가능하고 accept를 통해 쉽게 업데이트할 수 있다.
        • 종료이벤트를 지원하지 않아 스트림이 종료되지 않고 항상 새로운 값을 방출할 수 있다.
        • 항상 초기값을 필요로하기 때문에 예외적인 상황을 줄일 수 있다
      • 단점
        • 종료이벤트가 없다
        • RxRelay에 종속적이다
    • 사용예시
      • 사용자입력필드같이 값이 지속적으로 업데이트되어야하는 상황 (검색어 입력필드 등)
  • BehaviorSubject
    • 초기값을 가져야하지만, 초기값 없이 시작할 수도 있다.
    • 종료이벤트를 지원한다. (onComplete, onError)
    • value 속성이 없다. subscribe를 통해 값을 얻어와야한다.
    • 장단점
      • 장점
        • oNext, onComplete, onError 등 모든 이벤트를 방출할 수 있어 유연한 사용이 가능하다
        • RxSwift 기본 기능이다.
      • 단점
        • value가 없어 상태접근이 복잡하다
        • 종료 이벤트 관리가 필요하다
      •  사용예시
        • 초기값이 필요하지 않을 때: 특정 작업의 상태를 관리할 때
        • 네트워크 요청 결과 관리할 때: 성공 시 데이터 방출, 실패 시 onError 방출가능

 

'iOS' 카테고리의 다른 글

TDD with Swift  (0) 2024.08.01
딥링크 크래시 현상  (0) 2024.03.25
미래의 나를 위한 Mac Ventura(13.4) 에서 Xcode 13.4.1 돌리기  (0) 2024.01.15