我想取消订阅RxSwift中的Observable。为了做到这一点,我曾经将Disposable设置为nil。但在我看来,在更新到RxSwift 3.0.0-beta.2后,这个技巧不起作用,我无法取消订阅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?
答案 0 :(得分:14)
一般来说,最好在DisposeBag中输出所有订阅,这样当包含订阅的对象被解除分配时,它们也是如此。
let disposeBag = DisposeBag()
func setupRX() {
button.rx.tap.subscribe(onNext : { _ in
print("Hola mundo")
}).addDisposableTo(disposeBag)
}
但是如果你想要预订你想要杀死你只需要在你想要的时候调用dispose()
像这样:let disposable = button.rx.tap.subcribe(onNext : {_ in
print("Hallo World")
})
您可以随时调用此方法并取消订阅。
disposable.dispose()
但请注意,当您这样做时,您有责任将其解除分配。
答案 1 :(得分:1)
关注Shim问题的答案
let disposeBag = DisposeBag()
let subscription: Disposable?
func setupRX() {
let subscription = button.rx.tap.subscribe(onNext : { _ in
print("Hola mundo")
})
subscription?.addDisposableTo(disposeBag)
}
您以后仍然可以调用此方法
subscription?.dispose()