RxSwift를 알기 전에 먼저 Reactive Programming을 알아야 한다.
Reactive Programming이란?
Reactive Programming이란 비동기적 데이터 흐름과 전달에 관한 프로그래밍 패러다임이다.
이러한 Reactive Programming의 핵심은 모든 것을 비동기적 데이터의 Stream으로 간주하고, 다양한 방법을 통해 이러한 비동기 이벤트를 처리하는 것이다.
RxSwift란?
RxSwift란 Reactive Extension + Swift의 약자로 비동기 프로그래밍을 관찰 가능한 순차적 형태와 함수 형태의 연산자를 통해 처리하게끔 도와준다.
RxSwift를 사용하는 이유
- Reactive Programming된 API를 제공하기 때문에 명확하고 명시적으로 비동기 데이터를 처리할 수 있다.
- 다양한 비동기 처리방식을 하나로 통합함으로써 코드에 일관성을 제공한다.
- 결국 확장이 어려웠던 아키텍쳐 패턴까지 해결할 수 있다.
- 콜백 지옥에서 탈출하여 코드가 깔끔해지고 스레드관리가 용이해진다.
RxSwift의 단점
- 러닝커브가 높다.
- 작동 기반이 비동기로 이루어져 있어 디버깅이 어렵다.
- 클로저 사용이 많기 때문에 메모리 누수 및 순환참조가 일어날 수 있다. 이를 피할 수 있도록 캡처 리스트를 신경써야 한다.
Observable
- Observable은 데이터를 스트림 형태로 처리하는 객체이다.
- 시간이 지남에 따라 변할 수 있는 값을 방출하며, 이 데이터를 구독(Subscribe)하여 처리할 수 있다.
Observer
- Observer는 Observable이 방출하는 값을 수신하고 처리하는 역할을 한다.
- Observable을 구독하여, 새로운 데이터가 방출될 때마다 그 값을 처리한다.