리소스를 정리할때 사용함
let subscription1 = Observable.from([1, 2, 3])
.subscribe(onNext: { elem in
print("Next", elem)
}, onError: { error in
print("Error", error)
}, onCompleted: {
print("Completed")
}, onDisposed: {
print("Disposed")
})
구독으로 next, error, completed, disoposed 상태를 받는다 하지만 Disposed는 출력되지 않는다.
subscription1.dispose()
dispose를 따로 해줘야 Disposed가 출력된다.
Observable.from([1, 2, 3])
.subscribe {
print($0)
}
.disposed(by: bag) // disposeBag에 담김
bag = DisposeBag() // 이전의 disposeBag 해제
dispose() 메서드를 사용하기 보다는 DisposeBag에 따로 담아서 리소스를 해제하는것을 권장한다고한다.
let subscription2 = Observable<Int>.interval (.seconds(1),
scheduler: MainScheduler.instance)
.subscribe(onNext: { elem in
print("Next", elem)
}, onError: { error in
print("Error", error)
}, onCompleted: {
print("Completed")
}, onDisposed: {
print("Disposed")
})
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
subscription2.dispose()
}
주기적인 이벤트를 강제로 종료해야할떄 유용하다?