Als ich begann, RxSwift zu verwenden, habe ich BaseViewController
erstellt und es mit allen meinen Controllern erweitert, wo ich RxSwift verwende. Der Code von BaseViewController.swift:Wie behandelt man die Disposables korrekt im Projekt mit 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()
}
}
Und ich AddSubscription (_) Methode überall in meinem Kind-Controller. Zum Beispiel ein Stück Code aus:
class TasksViewController: BaseViewController{
overrided func viewWillAppear(){
//...
var subscribe = dataLoader.load(requestNetwork, dataManager: taskDataManager)
.observeOn(ConcurrentDispatchQueueScheduler(queue: queue))
.subscribe({ (event) -> Void in
//...
})
addSubscription(subscribe!)
}
}
Was passiert, wenn ich BaseViewController nicht und nur eine Instanz von DisposeBag()
in jedem Controller erstellen und fügen Sie alle meine Zeichnungen zu diesem disposeBag? Und wie sollte ich Disposables korrekt behandeln?
Vielen Dank. Vielleicht können Sie einige Tutorials über RxSwift empfehlen? Weil es nur wenige Informationen zu diesem Thema gibt. – Marina
Ja, definitiv. Sehen Sie sich die Beispiel-App im RxSwift Repo namens "RxExample" an. Führen Sie es einfach im Simulator aus. Auch das RxSwift Repo hat einige großartige Playground-Seiten mit kleinen Beispielen der meisten Betreiber. – solidcell
@Marina Diese Serie ist eine ausgezeichnete Einführung in RxSwift in 4 Post http://www.thedroidsonroids.com/blog/ios/rxswift-by-examples-1-the-basics/ –