[RxSwift] Disposable DisposeBag ์ด๋
์ด๋ฒ์๊ฐ์๋ disposable์ ๋ํด ๊ณต๋ถํด๋ณผ ๊ฒ์ ๋๋ค.
๋งค๋ฒ subscribe ํด์ฃผ๊ณ dispose(by: disposeBag)์ ๋ด์์ฃผ๋๋ฐ์
์ฌ๊ธฐ์ onDisposed๋ Observable์ด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ฉด์ ํธ์ถ๋์ด ์ง๋๋ค. Observable์ด onNext -> error ํน์ completed ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๊ณ ์ข ๋ฃ๋๋ฉด ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํด ์ค ํ์ ์์ด ์ ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง๋ง Rxswift ๊ณต์ ๊ฐ์ด๋๋ผ์ธ์ ๋ณด๋ฉด ์ด ๊ฒฝ์ฐ์๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ๋ ๊ฒ์ ๊ถ๊ณ ํ๊ณ ์์ต๋๋ค.
์ด๋ Disposable ํ์ ์ ๋ชจ๋ ๋ชจ์ ํ๋ฒ์ ํด์ ํ ์ ์๊ฒ๋ ํ๋ ๋ฐฉ๋ฒ์ด DisposeBag์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
subscribe์ ์ํ์ธ๋ฐ์. ๋ฆฌํด ํ์ ์ผ๋ก Disposable์ ๋ฐํํ๋๋ฐ ์ด๊ฒ๋ค์ DisposeBag์ ๋ด์ DisposeBag์ด ํด์ ๋๋ ์์ ์ ๋ชจ๋ ํจ๊ป ํด์ ๋์ด ์ง๊ฒ๋ ํฉ๋๋ค.
extension Disposable {
/// Adds `self` to `bag`
///
/// - parameter bag: `DisposeBag` to add `self` to.
public func disposed(by bag: DisposeBag) {
bag.insert(self)
}
}