![[RxSwift] RxSwift와 Observable, Disposable 이해하기](https://velog.velcdn.com/images/youz2me/post/6162bae0-4d7d-4e84-9c93-0cd92e8afc8e/image.png)
RxSwift를 이해하기 위해서는 먼저 반응형 프로그래밍을 이해하면 좋다. 반응형 프로그래밍은 데이터의 흐름과 변경 사항을 전파하는 데에 중점을 둔 프로그래밍 패러다임으로, 데이터에 어떤 변경이 이루어졌을 때(즉, 이벤트가 발생했을 때) 연결된 실행 모델들이 데이터를 전파받아 특정 작업을 수행한다.
ReactiveX는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그램을 작성하기 위한 라이브러리입니다.
결국은 어떠한 비동기 이벤트를 관찰 가능한 형태로 만든다는 점 정도만 이해하면 된다.
관찰 가능한 형태 자체를 바로 Observable이라고 한다. 이 Observable은 관찰이 가능한 흐름이며 비동기 이벤트의 시퀀스를 생성할 수 있는 대상이다.
이벤트를 관찰 가능한 형태로 만든다는 건 Observable 타입의 인스턴스를 생성하는 것과 같다.
Observer는 비동기 이벤트가 발생했을 때 전파받을 수 있는 객체로서, Observable을 구독한다.
RxSwift의 subscribe() 메소드에는 총 4개의 파라미터가 있다:
onNext는 Observable 객체에서 새로운 item이 방출됐을 때 실행된다.onError는 Observable 객체에서 기대하는 데이터가 생성되지 않았거나 오류가 발생했을 때 실행된다.onCompleted는 Observable 객체의 이벤트가 종료되어 더 이상 호출되지 않을 때 실행된다.Disposable는 Observable 객체를 구독 해제하고 싶을 때 사용할 수 있다.
subscribe() 메소드를 호출할 경우 Observable 객체를 구독할 수 있는데, 해당 Observable 객체의 이벤트를 더 이상 구독하지 않아도 될 경우 Disposable 타입의 값을 리턴해 구독을 취소시켜 준다.
구독을 해제하는 건 메모리 관리 측면에서 큰 의미가 있다. 만약 구독을 해제해주지 않으면 Observable 객체가 이벤트가 발생할 때마다 계속 item을 방출할 우려가 있고, 이로 인한 메모리 릭(Memory Leak)도 발생할 수 있다!
그래서 Disposable 타입의 인스턴스들을 담을 수 있는 DisposeBag이라는 배열을 사용한다.
결론:
subscribe() 호출할 때 disposed() 메서드를 사용해서 DisposeBag 안에 담아놓으면 된다.© 2025 Youjin Lee. All rights reserved.