听说过不需要组件明确知道彼此即可进行“发布-订阅”样式通信的Java事件总线(Event bus)。使用事件总线似乎可以更轻松地在不同类之间进行通信,且需要较少的编码量。我知道在iOS中,NSNotification也能够实现这种功能。但NSNotification在这里并不是一种替代方案。除了委托模式外,请告诉我在iOS中还有哪些好的解决方案可以作为EventBus在类之间通信的良好替代方案。
听说过不需要组件明确知道彼此即可进行“发布-订阅”样式通信的Java事件总线(Event bus)。使用事件总线似乎可以更轻松地在不同类之间进行通信,且需要较少的编码量。我知道在iOS中,NSNotification也能够实现这种功能。但NSNotification在这里并不是一种替代方案。除了委托模式外,请告诉我在iOS中还有哪些好的解决方案可以作为EventBus在类之间通信的良好替代方案。
使用 Swift,您可以使用 SwiftEventBus。它只是一个 NSNotificationCenter的包装器和 DispatchQueue。
注册事件:
SwiftEventBus.onMainThread(target, name: "someEventName") { result in
// UI thread
// Do something when the event occurr
}
触发事件:
SwiftEventBus.post("someEventName")
我认为你可以使用NSNotificationCenter
来实现这个功能。我看到了你的评论,关于它是一对多的,这是默认的情况,但是你也可以指定从哪个对象接收消息,像这样:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someSelector:)
name:@"MyPersonalNotification"
object:someOtherObject];
someOtherObject
发出通知时,您才会在someSelector:
中收到MyPersonalNotification
。这使得通信变成了一对一。