美文网首页
RxSwift-DisposeBag垃圾袋

RxSwift-DisposeBag垃圾袋

作者: May_Dobin | 来源:发表于2019-08-07 18:01 被阅读0次

DisposeBag垃圾袋分析, demo运行如下:

self.intervalOB = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.init())
        self.intervalOB.subscribe(onNext: { (num) in
            self.showSencondNum.text = String(num)
        }).disposed(by: disposeBag)
        
        _ = self.stopAction.rx.tap.subscribe(onNext: {
            print("点击按钮")
            self.disposeBag = DisposeBag()
        })

subscribe订阅序列的时候返回一个销毁者DisposeBase,当调用.disposed(by: disposeBag)的时候,会调用insert()

public func disposed(by bag: DisposeBag) {
        bag.insert(self)
    }

实际是插入到数组_disposables = [Disposable]()

 fileprivate var _disposables = [Disposable]()
    fileprivate var _isDisposed = false
    /// Constructs new empty dispose bag.
    public override init() {
        super.init()
    }
    /// Adds `disposable` to be disposed when dispose bag is being deinited.
    ///
    /// - parameter disposable: Disposable to add.
    public func insert(_ disposable: Disposable) {
        self._insert(disposable)?.dispose()
    }
    private func _insert(_ disposable: Disposable) -> Disposable? {
        self._lock.lock(); defer { self._lock.unlock() }
        if self._isDisposed {
            return disposable
        }
        self._disposables.append(disposable)
        return nil

当随着对象的生命周期结束,会调用deinit(),内部调用dispose()

deinit {
        self.dispose()
    }

紧接着会循环调用disposable.dispose(),源码分析如下:

 private func dispose() {
        let oldDisposables = self._dispose()

        for disposable in oldDisposables {
            disposable.dispose()
        }
    }

实现销毁者的销毁;

相关文章

  • RxSwift-DisposeBag垃圾袋

    DisposeBag垃圾袋分析, demo运行如下: subscribe订阅序列的时候返回一个销毁者Dispose...

  • RxSwift-DisposeBag

    将dispose 添加到 DisposeBag 中 DisposeBag会在 deinit 中自动销毁 nice

  • 2018-03-15

    垃圾袋生产厂家现状浅析 有品牌,能带货,不再是垃圾袋经销商选垃圾袋生产厂家的主要指标。垃圾袋经销商在往日的合作中,...

  • RxSwift中垃圾袋回收袋DisposeBag的使用技巧和de

    目录垃圾袋移除通知订阅关系赋值新的垃圾袋会让之前垃圾袋绑定的订阅关系释放用来给timer停止demo下载地址 前言...

  • “垃圾袋“不仅只有垃圾袋

    为了人生的下一个阶段目标,时隔很久的记账又重新搬出来了。记账的目的是为了能了解自己的消费结构,并优化消费结构,来达...

  • 2018-04-29

    家庭垃圾袋使用技巧 家里的客厅、厨房、卫生间都要放置垃圾篓,我们的日常生活离不开垃圾袋。怎样正确巧妙地使用垃圾袋,...

  • 厨房之技巧——垃圾分类

    结论:厨余垃圾分类后,家里更简单易打扫。因为 1,更少用大垃圾袋,用小垃圾袋代替; 2,大垃圾袋更换频率降低,但家...

  • 2018-04-24

    塑料垃圾袋的厚度是多少? 垃圾袋种类多有厚度标识的却很少。塑料垃圾袋,几乎家家户户都在用,能承重多少,却谁也说不清...

  • 2018-03-16

    垃圾袋经销商,如何整合垃圾袋生产厂家? 前篇浅析完了垃圾袋生产厂家现状的几大类型,这里说的是怎么重新整合厂家。其实...

  • 2018-04-04

    分享一次性垃圾袋生产制造流程 垃圾袋一般是用回收聚乙烯料加工而成。 通常也是垃圾袋的制作过程: 1、塑料颗粒的造粒...

网友评论

      本文标题:RxSwift-DisposeBag垃圾袋

      本文链接:https://www.haomeiwen.com/subject/kkeadctx.html