ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Disposing and Terminating
    ios/RxSwift 2022. 4. 19. 15:34
    728x90

    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

    댓글

oguuk Tistory.