Post

Dispose

Dispose

Dispose는 Observable과 구독간의 연결을 끊는 역할을 한다.

  • 예제 코드 (개별 dispose)
1
2
3
4
5
6
7
8
let observable = Observable.of("A", "B", "C")

let disposable = observable.subscribe { event in
    print(event)
}

// ✅ 수동으로 구독 해제
disposable.dispose()
  • 실행 결과
1
2
3
4
next(A)
next(B)
next(C)
completed
  • disposable.dispose()를 호출한 후에는 더 이상 이벤트를 받지 않음.

예제 코드 (DisposeBag 사용)

1
2
3
4
5
6
7
let disposeBag = DisposeBag()

let observable = Observable.of("X", "Y", "Z")

observable.subscribe { event in
    print(event)
}.disposed(by: disposeBag)  // ✅ DisposeBag이 자동으로 관리

실행 결과:

1
2
3
4
next(X)
next(Y)
next(Z)
completed
  • disposeBag이 해제될 때 자동으로 구독이 해제되므로 dispose()를 직접 호출할 필요 없음.

Dispose vs DisposeBag 차이점 정리

구분dispose()DisposeBag
역할개별적으로 구독 해제여러 개의 구독을 자동 관리
사용 방식disposable.dispose().disposed(by: disposeBag)
장점특정 구독을 수동 해제 가능메모리 누수 방지 및 자동 해제
단점여러 개를 관리하기 어려움개별 구독 해제는 불가능

결론:

  • 일시적으로 특정 구독을 해제해야 하면 dispose() 사용
  • 대부분의 경우 DisposeBag을 사용하여 자동 해제하는 것이 좋음
This post is licensed under CC BY 4.0 by the author.