听说组件之间的java'发布 - 订阅'样式通信,而不需要组件明确地相互了解,这是事件总线。似乎使用事件总线我们可以非常容易地在不同类之间进行通信,而需要更少的编码我知道iOS中的NSNotifications也是这样做的。 NSNotification不是这里的替代品。请告诉我除了委托模式之外什么是iOS中的一个很好的解决方案,它是一个很好的替代EventBus用于类之间的通信。?
答案 0 :(得分:11)
使用 Swift ,您可以使用SwiftEventBus。 只是一个不错的wrapper around NSNotificationCenter和DispatchQueue。
注册活动:
SwiftEventBus.onMainThread(target, name: "someEventName") { result in
// UI thread
// Do something when the event occurr
}
触发事件:
SwiftEventBus.post("someEventName")
如果您需要自定义它,source code 简短,清除和简单即可理解。
答案 1 :(得分:5)
我认为你可以使用NSNotificationCenter
这个,我读到你的评论是一对多的,默认是真的但是你可以指定你想要的对象接收这样的消息:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someSelector:)
name:@"MyPersonalNotification"
object:someOtherObject];
只有在MyPersonalNotification
张贴someSelector:
时,您才会在someOtherObject
收到user@server:/ #dspmqver
Name: WebSphere MQ
Version: 7.0.1.5
。这使得沟通一对一。
你也可以使用Key-Value Observing API,但我个人觉得有些不舒服。
答案 2 :(得分:0)
查看tolo 该功能有点类似于事件总线,它比NSNotification有一个很大的优势,因为您在解除分配时不必取消注册(如在iOS9中)。