我有一个单例类,我用它来观察一个属性并触发下一个动作。
单例类:
public class BridgeDispatcher: NSObject {
open var shouldRespondToBridgeEvent = SafePublishSubject<[String: Any]>()
open var shouldPop = SafePublishSubject<Void>()
open var shouldUpdate = SafePublishSubject<Void>()
public let disposeBag = DisposeBag()
open static let sharedInstance: BridgeDispatcher = BridgeDispatcher()
override init() {
super.init()
shouldRespondToBridgeEvent.observeNext { event in
if let type = event["type"] as? String {
switch type {
case "ShouldUpdate":
self.onShiftBlockDidUpdateHeight.next()
case "shouldPop":
self.onPopCurrentViewController.next(())
default:
print("Event not supported")
}
}
}.dispose(in: self.disposeBag)
}
}
上述方法将通过调用触发:
BridgeDispatcher.sharedInstance.shouldRespondToBridgeEvent.next(body)
注册 onPopCurrentViewController:
BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext { doSomething() }.dispose(in: BridgeDispatcher.sharedInstance.disposeBag)
在我的应用程序中,BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{}
由于业务逻辑的原因,方法会被多次调用,因为这个doSomething()
方法在调用时会触发多次BridgeDispatcher.sharedInstance.shouldRespondToBridgeEvent.next(body)
。
这是我的单例设计模式或observeNext多次调用的问题。(BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{} )
Need help.