Swift 中的类型安全和便捷的观察系统。
struct MessageEvent: EventType {
let message: String
}
EventHub.addObserver(self) { (event: MessageEvent) in
print(event.message) // -> 😜
}
EventHub.post(MessageEvent(message: "😜"))
定义 adopt 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 2.1
EventHub 可以通过 CocoaPods 使用。要安装,只需将以下行添加到您的 Podfile 中:
pod "EventHub"
Yuki Mishima, [email protected]
EventHub 遵循 MIT 许可证。请参阅 LICENSE 文件获取更多信息。