web-dev-qa-db-fra.com

Comment se désabonner d'Observable dans RxSwift?

Je souhaite me désabonner d'Observable dans RxSwift. Pour ce faire, j'avais l'habitude de régler le jetable à zéro. Mais il me semble qu'après la mise à jour vers RxSwift 3.0.0-beta.2 cette astuce ne fonctionne pas et que je ne peux pas me désabonner de Observable:

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

func setDisposable(){
    cancellableDisposeBag = DisposeBag()
}

func cancelDisposable(){
    cancellableDisposeBag = nil
}

Alors peut-être que quelqu'un peut m'aider à me désinscrire correctement d'Observable?

8
Marina

En règle générale, il est recommandé de supprimer tous vos abonnements dans un DisposeBag. Ainsi, lorsque l'objet contenant vos abonnements est désalloué, il l'est également.

let disposeBag = DisposeBag()

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

mais si vous avez un abonnement que vous voulez tuer avant la main, vous appelez simplement disposer () dessus quand vous le souhaitez

comme ça:

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

A tout moment, vous pouvez appeler cette méthode et vous désabonner.

disposable.dispose()

Mais sachez que lorsque vous le faites comme cela, il vous incombe de le faire désallouer.

14
Daniel Poulsen

Suivi avec réponse à la question de Shim

let disposeBag = DisposeBag()
let subscription: Disposable?

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

Vous pouvez toujours appeler cette méthode plus tard

subscription?.dispose()
1
Ted