iOS中的事件总线等价物

时间:2015-06-18 04:42:05

标签: java ios objective-c swift

听说组件之间的java'发布 - 订阅'样式通信,而不需要组件明确地相互了解,这是事件总线。似乎使用事件总线我们可以非常容易地在不同类之间进行通信,而需要更少的编码我知道iOS中的NSNotifications也是这样做的。 NSNotification不是这里的替代品。请告诉我除了委托模式之外什么是iOS中的一个很好的解决方案,它是一个很好的替代EventBus用于类之间的通信。?

3 个答案:

答案 0 :(得分:11)

使用 Swift ,您可以使用SwiftEventBus只是一个不错的wrapper around NSNotificationCenterDispatchQueue

注册活动:

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中)。