Quando ho iniziato a usare RxSwift Ero solito creare BaseViewController
ed estenderlo con tutti i miei controller dove utilizzo RxSwift. Il codice di BaseViewController.swift:Come trattare gli articoli monouso corretti nel progetto con RxSwift?
class BaseViewController: UIViewController {
var mSubscriptions: CompositeDisposable?
func addSubscription(subscription: Disposable){
if(mSubscriptions == nil){
mSubscriptions = CompositeDisposable()
}
if let mSub = mSubscriptions{
mSub.addDisposable(subscription)
}
}
func unsubscribeAll(){
if let mSub = mSubscriptions{
mSub.dispose()
mSubscriptions = nil
}
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
unsubscribeAll()
}
deinit{
unsubscribeAll()
}
}
E io uso AddSubscription (: _) Metodo ovunque nei miei controllori bambino. Per esempio un pezzo di codice da:
class TasksViewController: BaseViewController{
overrided func viewWillAppear(){
//...
var subscribe = dataLoader.load(requestNetwork, dataManager: taskDataManager)
.observeOn(ConcurrentDispatchQueueScheduler(queue: queue))
.subscribe({ (event) -> Void in
//...
})
addSubscription(subscribe!)
}
}
Che cosa succede se io non uso BaseViewController e basta creare un'istanza di DisposeBag()
in ogni controller e aggiungere tutti i miei abbonamenti a che disposeBag? E come devo trattare i Monouso corretti?
Grazie mille. Forse puoi consigliare alcuni tutorial su RxSwift? Perché ci sono poche informazioni su questo argomento. – Marina
Sì, sicuramente. Controlla l'app di esempio nel repository RxSwift chiamato "RxExample". Basta eseguirlo nel simulatore. Inoltre, il repository RxSwift ha alcune fantastiche pagine Playground con piccoli esempi della maggior parte degli operatori. – solidcell
@Marina Questa serie è un'ottima introduzione a RxSwift in 4 post http://www.thedroidsonroids.com/blog/ios/rxswift-by-examples-1-the-basics/ –