如何在 RxSwift 中取消订阅 Observable? [英] How to unsubscribe from Observable in RxSwift?

查看:85
本文介绍了如何在 RxSwift 中取消订阅 Observable?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 RxSwift 中取消订阅 Observable.为了做到这一点,我曾经将 Disposable 设置为 nil.但在我看来,更新到 RxSwift 3.0.0-beta.2 后,这个技巧不起作用,我无法取消订阅 Observable:

I want to unsubscribe from Observable in RxSwift. In order to do this I used to set Disposable to nil. But it seems to me that after updating to RxSwift 3.0.0-beta.2 this trick does not work and I can not unsubscribe from Observable:

//This is what I used to do when I wanted to unsubscribe
var cancellableDisposeBag: DisposeBag?

func setDisposable(){
    cancellableDisposeBag = DisposeBag()
}

func cancelDisposable(){
    cancellableDisposeBag = nil
}

那么也许有人可以帮助我如何正确取消订阅 Observable?

So may be somebody can help me how to unsubscribe from Observable correctly?

推荐答案

一般来说,最好将所有订阅都放到 DisposeBag 中,这样当包含订阅的对象被释放时,它们也会被释放.

In general it is good practice to out all of your subscriptions in a DisposeBag so when your object that contains your subscriptions is deallocated they are too.

let disposeBag = DisposeBag()

func setupRX() {
   button.rx.tap.subscribe(onNext : { _ in 
      print("Hola mundo")
   }).addDisposableTo(disposeBag)
}

但是如果你有一个订阅你想提前终止,你只需在你想要的时候调用 dispose() 就可以了

but if you have a subscription you want to kill before hand you simply call dispose() on it when you want too

像这样:

let disposable = button.rx.tap.subcribe(onNext : {_ in 
   print("Hallo World")
})

您可以随时调用此方法并取消订阅.

Anytime you can call this method and unsubscribe.

disposable.dispose()

但请注意,当您这样做时,您有责任将其解除分配.

But be aware when you do it like this that it your responsibility to get it deallocated.

这篇关于如何在 RxSwift 中取消订阅 Observable?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆