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.