웰코발
웰코's iOS
웰코발
전체 방문자
오늘
어제
  • 분류 전체보기 (63)
    • Swift (26)
    • rxSwift (13)
    • SwiftUI (3)
    • iOS (12)
    • 기타 (1)
    • 개발관련 용어정리 (6)
    • 면접준비 (0)
    • 공공데이터 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Scroll
  • 주제구독
  • cell
  • UI
  • delay
  • 대기오염통계 현황
  • WKWebView
  • uitableview
  • Coordinator
  • collectionview
  • SWIFT
  • ios
  • content_available
  • 측정소정보
  • alamofire
  • swiftUI
  • Observable
  • rxswift
  • ReactorKit
  • 디자인

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
웰코발

웰코's iOS

[rxSwift] Dispose 는 왜 하는 걸까?
rxSwift

[rxSwift] Dispose 는 왜 하는 걸까?

2022. 10. 20. 20:12

dispose

  • 구독(Subscribe)을 처리, 메모리 누수를 막기 위함.
  • 모든 subscribe의 return 에는 Disposable를 방출함.
  • 사용하지 않는 Observable을 메모리에서 해제하기 위함.
  • Disposable 프로토콜 안에는 disposed func으로 사용하지 않는 Observable을 DisposeBag에 넣어 관리 할 수 있음.

disposeBag

  • 구독에 대해서 일일히 관리하는 것은 효율적이지 못하기 때문에, RxSwift에서 제공하는 disposedBag 타입을 이용
  • disposeBag에는 disposables를 가지고 있음, disposable은 dispose bag이 할당 해제 하려고 할 때마다 dispose()를 호출
Observable.of(1, 2, 3)
    .subscribe {
        print($0)
    }
    .dispose()
  • 위와 같이 Observable 하나하나 dispose 시켜주는게 번거롭기에 아래와 같이 DisposeBag에 넣어 관리함. 즉, 쓰레기통과 같은 원리이다.
let disposeBag = DisposeBag()

Observable.of(1, 2, 3) 
    .subscribe(onNext: {
    	print($0)
    })
    .disposed(by: disposeBag)
    
Observable.of(4, 5, 6) 
    .subscribe(onNext: {
    	print($0)
    })
    .disposed(by: disposeBag)
    
Observable.of(7, 8, 9) 
    .subscribe(onNext: {
    	print($0)
    })
    .disposed(by: disposeBag)
    

// deinit 시 disposeBag에 담긴 Observable의 메모리 해제가 이르어짐
  • 해당 Observable을 가지고 있는 클래스가 해제 될 때 DisposeBag에 담긴 Observable도 같이 해제함.

'rxSwift' 카테고리의 다른 글

[rxSwift] Subject 를 wrapping한 Relay 사용법  (0) 2022.10.21
[rxSwift] Subject 에 대한 이해와 종류  (0) 2022.10.21
[rxSwift] Observable create 하는 법  (0) 2022.10.20
[rxSwift] Observable subscribe 하는 법  (0) 2022.10.19
[rxSwift] 기본적인 Observable 의 종류  (0) 2022.10.19
    'rxSwift' 카테고리의 다른 글
    • [rxSwift] Subject 를 wrapping한 Relay 사용법
    • [rxSwift] Subject 에 대한 이해와 종류
    • [rxSwift] Observable create 하는 법
    • [rxSwift] Observable subscribe 하는 법
    웰코발
    웰코발
    나의 개발 일지

    티스토리툴바