[TIL] RxSwift

Eden·2025년 7월 23일

RxSwift는 iOS 개발에서 리액티브 프로그래밍(reactive programming)을 구현하기 위한 라이브러리입니다.
비동기 이벤트를 스트림(Stream) 형태로 처리하며, 데이터 흐름을 선언적으로 표현할 수 있습니다.


1. RxSwift란?

  • ReactiveX의 Swift 구현체
  • 비동기 이벤트를 데이터 스트림으로 관리
  • 이벤트 기반 프로그래밍을 단순화
  • 대표 키워드: Observable, Observer, Operator

2. 핵심 개념

2.1 Observable

  • 데이터 스트림을 의미
  • 시간이 지남에 따라 데이터를 방출(emit)하는 역할

2.2 Observer

  • Observable을 구독(subscribe)하여 이벤트를 받음

2.3 Disposable

  • 구독을 해제하여 리소스를 정리하는 역할

2.4 Operator

  • Observable에서 발생한 데이터를 가공(transform)

3. 기본 사용 예시

3.1 Observable 생성

import RxSwift

let observable = Observable.of(1, 2, 3)

3.2 구독(Subscribe)

observable.subscribe { event in
    print(event)
}

3.3 DisposeBag으로 메모리 관리

let disposeBag = DisposeBag()
observable.subscribe(onNext: { value in
    print(value)
}).disposed(by: disposeBag)

4. 주요 연산자 (Operators)

  • map: 값 변환
observable.map { $0 * 2 }
  • filter: 조건에 맞는 값만
observable.filter { $0 > 1 }
  • merge, combineLatest, zip: 여러 스트림 결합

5. RxCocoa

  • UIKit 컴포넌트와의 바인딩을 지원하는 라이브러리
  • 예: textField.rx.text, button.rx.tap
textField.rx.text
    .bind(to: label.rx.text)
    .disposed(by: disposeBag)

6. 장점

  • 비동기 코드 가독성 향상
  • 데이터 흐름을 선언적으로 표현 가능
  • 이벤트 기반 UI 처리에 강력

7. 단점

  • 러닝 커브가 있음
  • 코드 복잡도 증가 가능
  • 메모리 관리(DisposeBag) 주의 필요

결론

RxSwift는 iOS에서 반응형 프로그래밍을 구현하기 위한 강력한 도구입니다.
비동기 처리와 UI 바인딩을 효율적으로 관리하고, 선언적인 코딩 스타일을 제공합니다.

profile
iOS Dev

0개의 댓글