當我開始使用RxSwift我曾經創建BaseViewController
,並用我所有的控制器擴展它,我使用RxSwift。 BaseViewController.swift的代碼:如何使用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()
}
}
,而且我用addSubscription(:_)在我的孩子控制器方法隨處可見。例如從一段代碼:
class TasksViewController: BaseViewController{
overrided func viewWillAppear(){
//...
var subscribe = dataLoader.load(requestNetwork, dataManager: taskDataManager)
.observeOn(ConcurrentDispatchQueueScheduler(queue: queue))
.subscribe({ (event) -> Void in
//...
})
addSubscription(subscribe!)
}
}
如果我不使用什麼BaseViewController,只是在每個控制器創建DisposeBag()
一個實例,並添加我的所有訂閱到disposeBag?我應該如何正確處理一次性用品?
非常感謝。也許你可以建議一些關於RxSwift的教程?因爲關於這個問題的信息很少。 – Marina
是的。查看RxSwift repo中名爲「RxExample」的示例應用程序。只需在模擬器中運行它。此外,RxSwift回購有一些很棒的遊樂場頁面,並帶有大多數運營商的小例子。 – solidcell
@Marina這個系列它是一個很好的介紹RxSwift在4後http://www.thedroidsonroids.com/blog/ios/rxswift-by-examples-1-the-basics/ –