EventHub
Swift中的类型安全且方便的观察系统。
快速示例
struct MessageEvent: EventType {
let message: String
}
EventHub.addObserver(self) { (event: MessageEvent) in
print(event.message) // -> 😜
}
EventHub.post(MessageEvent(message: "😜"))
使用方法
- 定义遵循
EventType
协议的事件
事件可以是类、结构体或枚举。
enum LoginEvent: EventType {
case success(id: String)
case failure(error: ErrorType)
}
- 添加观察者和块
调用addObserver(observer:thread:block:)
。
observer
:观察者对象。如果观察者对象被销毁,观察将自动移除,块将不再被调用。thread
:可选(默认为nil)。它决定了哪条线程执行块。如果是nil,块将在发布线程上同步执行。block
:回调闭包。块接收定义的事件。
EventHub.addObserver(self, thread: .Main) { (event: LoginEvent) in
switch event {
case .success(let id):
print(id)
case .failure(let error):
print(error)
}
}
- 发布事件
EventHub.post(LoginEvent.success(id: id))
要求
Swift 3.0
安装
EventHub 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile:
pod "EventHub"
作者
Yuki Mishima,[email protected]
许可
EventHub 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。