RxSwift

Jeom·2024년 10월 1일
post-thumbnail

RxSwift란?

RxSwift는 Reactive Programming(반응형 프로그래밍) 패러다임을 Swift에 적용할 수 있도록 해주는 라이브러리이다.
Reactive Programming의 기본 개념은 데이터와 이벤트의 변화를 스트림(stream) 형태로 관리하고, 이 변화를 구독(subscribe)하여 실시간으로 반응하는 것이다.
이 패러다임은 비동기 이벤트 처리와 데이터 흐름을 효율적으로 관리할 수 있게 해주며, 특히 UI 업데이트, 네트워크 요청, 사용자 입력 처리와 같은 작업에서 강력한 장점을 발휘한다.

RxSwift의 주요 개념

Observable (옵저버블)

Observable은 데이터의 스트림을 나타내는 객체입니다. 이 스트림은 단일 값, 여러 값, 또는 에러, 종료 이벤트를 포함할 수 있습니다. 옵저버블은 데이터가 변경되거나 이벤트가 발생할 때마다 이를 방출(emit)하고, 이를 Observer가 구독하여 처리합니다.
예를 들어, 사용자 입력, 네트워크 응답, 또는 UI 이벤트 등을 옵저버블로 표현할 수 있습니다.

Observer (옵저버)

Observer는 옵저버블의 변화를 감지하고 반응하는 객체입니다. 옵저버블이 이벤트나 데이터를 방출하면, 이를 받아서 처리하는 역할을 합니다.
옵저버블에 subscribe 메소드를 호출하여 옵저버가 옵저버블을 구독(subscribe)하게 되며, 이때 데이터를 받아서 원하는 작업을 수행할 수 있습니다.

Disposable (디스포저블)

옵저버가 옵저버블을 구독한 후에는, 더 이상 필요하지 않을 때 구독을 해제할 수 있습니다. 이때 Disposable 객체를 사용하여 구독을 해제하거나 메모리에서 해제하는 등의 작업을 수행할 수 있습니다.
메모리 누수를 방지하기 위해 구독 해제는 매우 중요한 작업입니다.

Subjects (서브젝트)

Subject는 Observable과 Observer의 역할을 모두 하는 특수한 객체입니다. 즉, 데이터를 방출할 수 있고, 다른 옵저버블을 구독할 수도 있습니다.
자주 사용하는 서브젝트의 종류:
PublishSubject: 구독이 시작된 이후의 새로운 이벤트만 방출.
BehaviorSubject: 초기값을 가지고 있으며, 최신 이벤트를 구독자에게 전달.
ReplaySubject: 지정된 버퍼 크기만큼 이전 이벤트를 메모리에 저장하여, 새로운 구독자에게 해당 이벤트들을 전달.
AsyncSubject: Observable이 종료될 때 마지막 이벤트만 전달.

Schedulers (스케줄러)

스케줄러는 코드가 실행될 스레드 환경을 지정하는 역할을 합니다. 네트워크 요청은 백그라운드 스레드에서 실행하고, UI 업데이트는 메인 스레드에서 실행하도록 스케줄러를 지정할 수 있습니다.
RxSwift의 주요 스케줄러:
MainScheduler: 메인 스레드에서 실행.
ConcurrentDispatchQueueScheduler: 여러 작업을 병렬로 실행.
OperationQueueScheduler: OperationQueue 기반 스케줄러.

Operators (연산자)

RxSwift의 강력한 점은 다양한 연산자를 사용하여 데이터 스트림을 변형하고 처리할 수 있다는 것입니다. 예를 들어, map, flatMap, filter, merge, combineLatest 등의 연산자를 사용하여 데이터를 변형하거나 병합, 결합할 수 있습니다.
연산자는 옵저버블의 데이터를 변경하거나 필터링하여 원하는 형태로 변형할 수 있습니다.

profile
iOS 개발노트

0개의 댓글