SwiftEventHub 1.0.0

SwiftEventHub 1.0.0

imbue11235 维护。



  • imbue11235

Swift EventHub

Swift 语言实现的_eventHub 简单实现。支持回调和监听器。

示例

回调

struct CounterEvent: Event {
    let currentCount: Int
}

let eventHub = EventHub(queue: .global())
eventHub.subscribe { (event: CounterEvent)
    print(event.currentCount) // => 5
}

eventHub.trigger(CounterEvent(currentCount: 5))

监听器

struct SomeErrorEvent: Event {
    let message: String
    let code: Int 
}

class NotifyAdminListener: Listener<SomeErrorEvent> {
    override func handle(event: SomeErrorEvent) {
        print("Oh no! We got error \(error.code) with the message '\(error.message)'")
    }
}

let eventHub = EventHub(queue: .global())
eventHub.subscribe(NotifyAdminListener())
eventHub.trigger(SomeErrorEvent(message: "Fatal and dangerous error", code: 500))

使用方法

  1. DispatchQueue 上初始化 EventHub 类。将 EventHub 添加到全局作用域(例如共享实例),用于跨事件/监听器,或在内部作用域中使用。
let hub = EventHub(queue: .global())
  1. 通过使它们符合 Event 协议来定义事件
struct MyEvent: Event {}
  1. 通过回调或监听器(见上面的示例)订阅事件
hub.subscribe { (event: MyEvent) in 
    // Do something with the event
}
  1. 通过调用方法 .trigger(event: Event) 触发事件
hub.trigger(MyEvent())
  1. 触发的事件将被分发到与中心附加的所有监听器,并监听该特定事件。

  2. 要退订,可以使用.subscribe方法返回的UUID。

let subscription = hub.subscribe { // ... }
hub.unsubscribe(subscription)

需求

Swift 4.1

安装

使用CocoaPods

pod 'SwiftEventHub'