¿Cuándo deberíamos llamar a addDisposableTo (disposeBag) en RxSwift?

Creamos un DisposeBag y un Observable , suscribimos el Observable y luego addDisposableTo(disposeBag) , sé cuándo el DisposeBag va a desiniciar, llamará a dispose() para liberar resources, de lo contrario, ocasionará una pérdida de memory.

Si el Observable envía Complete o Error que finaliza en un time limitado. Cuando el Observable termina antes de que DisposeBag DisposeBag, ¿tengo la necesidad de llamar addDisposableTo(disposeBag) ? ¿ DisposeBag libera automáticamente el observador que se suscribió cuando recibió el post terminado?

 let disposeBag = DisposeBag() Observable.just("🔴") .subscribe { event in print(event) } .addDisposableTo(disposeBag) 

¿Debo tener que .addDisposableTo(disposeBag) explícitamente? Creo que después de enviar "🔴", ¿el Observable terminará y liberará al observador?

Si está seguro de que el observable se completa de manera determinista , como usar just en su ejemplo, o usar take , takeUntil , etc., puede optar por no usar DisposeBag.

Puede recibir una advertencia del comstackdor, que en realidad explica bien este comportamiento y cómo solucionarlo. Pero en general, es más seguro para el futuro si usa DisposeBag de todos modos.

Ver: advertencia desechable no utilizada

Las bolsas desechables se usan para devolver el comportamiento similar a ARC a RX. Cuando se desasigna un DisposeBag, llamará a disponer en cada uno de los elementos desechables agregados.

Se utiliza para deshacer las references antiguas que pasa en el cierre y los resources que ya no se necesitan (y que aparentemente no se usaron): por ejemplo, una connection HTTP abierta, una connection a la database o un caching.

Entonces, si tenemos algún recurso que se pueda dejar, debe llamarlo.

Más en este artículo .