У меня есть класс Singleton, к которому я привык наблюдать свойство и запускать следующее действие.
Класс Singleton:
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)
.
Эта проблема связана с моим одноэлементным шаблоном проектирования или наблюдаем далее , вызывающим несколько раз.(BridgeDispatcher.sharedInstance.onPopCurrentViewController.observeNext{} )
Need help.