RxSwift销毁者探索

180 阅读1分钟

通过下面的代码调试

        let ob = Observable<Any>.create { observer -> Disposable in
            observer.onNext("销毁者")
            return Disposables.create { print("销毁释放了") }
        }
        // 序列订阅
        let dispose = ob.subscribe(onNext: { anything in
            print("订阅到了:\(anything)")
        }, onError: { error in
            print("订阅到Error:\(error)")
        }, onCompleted: {
            print("完成了")
        })
        //.disposed(by: disposeBag) 加入垃圾袋
        print("执行完毕")
        dispose.dispose()
序列的销毁有三种方式:
  1. 发送特定事件: onError, onCompleted
  2. 销毁者主动调用dispose(): dispose.dispose()
  3. 加入垃圾袋(官方推荐,类似ARC的自动释放池): disposed(by: disposeBag)

1662541036297.jpg

上面的代码也印证了第一种方式,在发送error、completed事件后内部调用了dispose(),对序列进行销毁。那么注销者的核心方法就是dispose(),让我们来探一探。

销毁者.png