Swift

Swift RxSwift

pockpock 2024. 8. 1. 23:16

RXSwift

마이크로소프트에서 제공하는 ReactiveX를 적용한 스위프트 서브파티 라이브러리

  • ReactiveX: 비동기프로그래밍과 옵저버 패턴을 사용하기 쉽도록 돕는 라이브러리(반응형 프로그래밍)

→ 유지보수성이 좋고 가독성 높은 코드를 작성할 수 있음

안드로이드 앱 개발자와 중요한 로직 등 싱크를 맞출 수 있음

 

→ 왜? ReactiveX 프로그래밍 철학을 따르기 때문

많은 기업에서 RXSwift 를 사용하는 경우가 많기 때문에 배워두면 좋음

 

참고로 리액터킷이나 립스 사용하는 회사면 기술적으로 성장하기 좋은 회사인것 같아여

Observable

  • Observable = 관측 가능한 대상
    • Combine의 Publisher와 동일
  • 이벤트&데이터를 방출하는 클래스 → 구독하고 있던 구독자(=관찰자, =옵저버)가 반응하여 어떠한 로직을 수행
  • subscribe(구독하는 것), Observer(관찰자)
  • 일반적으로 선언하는 변수와 다르게 스트림의 성질을 갖는다
  • 선언한 값들은 한번 값을 가지면 그 값 자체로 의미를 갖지만 RX는 방출된 값(이벤트)에 따라서 반응한다
    • onNext: 정상적인 데이터 방출
    • onError: 에러 방출
    • onCompleted: 옵저버블의 종료 방출
  • 데이터 방출 사이에는 시간적인 개념과 데이터의 흐름이 포함된다
  • DisposeBag → 구독을 끝낸 뒤 자동으로 메모리 처리(구독 해제됨)
  • Disposables → 작업이 완료된 후 사용된 리소스를 정리하는 데 사용. (Observable의 생명 주기를 관리하고, 필요하지 않은 리소스를 해제하는 역할)

Single

Single → 옵저버블 중에서 값을 한번만 방출하는 옵저버블

  • Combine의 Just와 동일
  • 방출값
    • onSuccess : 옵저버블의 onNext와 동일
    • onFailure : 옵저버블의 onError와 동일

Subject

Subject → 옵저버블 중에서 외부에서 값을 넣어줄 수 있는 옵저버블

  • BehaviorSubject
    • 초기값이 있는 Subject
    • Combine의 CurrentValueSubject와 동일
  • PublishSubject
    • 초기값이 없는 Subject
    • Combine의 PassThroughSubject와 동일
정리하자면

비동기 이벤트를 관찰 가능한 형태로 만든 것이 Observable,

Observable은 해당 비동기 이벤트가 발생했을 때 항목(Item)을 방출함

관찰 가능한 형태인 Observable을 관찰하는 것이 Observer,

Subscribe(onNext:...) 메서드를 통해 Observable을 구독할 수 있다.