iOS中的事件总线等价物

jis*_*ala 9 java objective-c ios swift

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

lif*_*foo 11

使用Swift,您可以使用SwiftEventBus.它只是NSNotificationCenterDispatchQueue的一个很好的包装器.

注册参加活动:

SwiftEventBus.onMainThread(target, name: "someEventName") { result in
    // UI thread
    // Do something when the event occurr
}
Run Code Online (Sandbox Code Playgroud)

触发事件:

SwiftEventBus.post("someEventName")
Run Code Online (Sandbox Code Playgroud)

如果你需要定制它的源代码,清晰易于理解.

  • 嘿,我是图书馆的创造者,很高兴你们发现它很有用:)干杯 (9认同)

Bru*_*sso 5

我认为你可以使用NSNotificationCenter它,我读到你的评论它是一对多的,默认情况下它是真的但你可以指定你想从哪个对象接收这样的消息:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(someSelector:)
                                             name:@"MyPersonalNotification"
                                           object:someOtherObject];
Run Code Online (Sandbox Code Playgroud)

在这里MyPersonalNotification,someSelector:只有在someOtherObject发布时才会收到.这使得沟通一对一.

您也可以使用Key-Value Observing API,但我个人觉得它有点不舒服.