๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IOS๐ŸŽ/RxSwift

[RxSwift] Disposable DisposeBag ์ด๋ž€

by Jouureee 2022. 3. 17.

 

์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” 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)
    }
}

 

๋Œ“๊ธ€