반응형 프로그래밍(Reactive Programming)
데이터의 흐름 및 변경사항을 전파하는 데 중점을 둔 프로그래밍 패러다임입니다. 이 패러다임을 사용할 경우, 주변환경 / 데이터에 변화가 생길 때 연결된 실행 모델들이 이 이벤트를 받아 동작하도록 설계하는 방식입니다.
MVVM 소프트웨어 아키텍처 패턴을 사용하는 경우 각 구성요소 간에 소통에 있어서 간결하고 가독성 높은 코드로 처리할 수 있는 장점이 있다.
Observable
Observable이 배출하는 하나 또는 연속된 항목에 Observer는 반응한다.
- 비동기적으로 발생하는 데이터 스트림을 나타내는 타입
- 데이터 스트림은 시간에 따라 값 또는 이벤트의 Sequence
Event
- next
- error
- 오류 상태에 도달했을 때 발생
- 이 이벤트가 발생하면 Observable은
next나 completed는 발생하지 않는다.
- completed
- Observable이 정상적으로 완료되었을 때 발생
Observer & Subscriber
- 이벤트를 감시하고 처리하는 객체를 의미
- Observable의 subscribe 메서드를 호출하여 Observable에 등록되고, Observable이 방출하는 이벤트를 처리
- Event에 대응하는 비동기 처리
- RxSwift에서는 subscribe 메서드에 전달되는 클로저가 Observer 역할, 반환값이 Disposable로서 이는 Subscriber의 일부로 간주
Disposable
- Observable - Observer의 관찰을 중단하고 메모리 누수를 방지하고 리소스를 효과적으로 관리(dispose) 할수 있는 객체
- RxSwift에서는 dispose() 또는 disposed(by:)와 같은 메서드를 호출하여 수동으로 해제하거나, 특정 수명 주기에 연결되어 자동으로 관리