-
Disposing and Terminatingios/RxSwift 2022. 4. 19. 15:34728x90
Observable은 subscribe 이후 complete 또는 error 이벤트가 발생하기 전까지 계속 next 이벤트를 발생시키므로 메모리 누수가 발생함으로 dispose 해줘야 함
일반적인 dispose 방법
let observable = Observable.of(1,2,3) let subscription = observable.subscribe{ print($0) } subscription.dispose()
원하는 시점에서 dispose할 수 있지만 일일이 해야하는 번거로움이 있음
disposeBag
특정 observable을 처리하는 주요 역할
여러 개의 구독을 한 번에 처리가 가능하다.
let disposeBag = DisposeBag() OBservable.of("A","B","C") .subscribe { print($0) }.disposed(by: disposeBag)
Create
subscription을 생성할 수 있는 또 하나의 방법
Observable<String>.create { observer in observer.onNext("A") observer.onCompleted() observer.onNext("?") return Disposables.create() }.subscribe(onNext: { print($0) }, onError: { print($0) }, onCompleted: { print("Completed") }, onDisposed: { print("Disposed") } ) .disposed(by: disposeBag)
실행하면 다음과 같이 나온다.
A Completed Disposed
observer.onNest("A")를 호출 후 아래 onCompleted 호출되어서 아래 코드들은 건너뛰고 바로 .subscribe가 실행된 후 dispose 된다.
728x90'ios > RxSwift' 카테고리의 다른 글
Implementing Observable & Subscriptions (just, of, from) (0) 2022.04.19 OBSERVABLE (0) 2022.04.19 What is RxSwift & CocoaPods? (0) 2022.04.18