EventsKit
一个小型的 Swift 事件库,提供了一些基本事件类型
FutureEvent
PresentEvent
PastEvent
每个此类型都可以实现一些 Event 协议
Event
是一个包含任何监听器(Swift 闭包)的对象,它有一个模板参数 - 发射值类型。EmptyEvent
是具有 Void 模板参数的Event
的语法糖。ValueEvent
是只能包含一个监听器的事件,该监听器需要接收并 返回 值。此协议包含两个模板参数。
FutureEvent
描述
这是经典事件(如 C# 中的 event
),可以包含多个监听器并将每个新消息多播给这些监听器。此事件只 发射 新消息。这意味着如果您将新监听器添加到现有事件,此事件不会向新监听器发射先前消息。
类型
FutureEvent: Event
FutureEmptyEvent: EmptyEvent
FutureValueEvent: ValueEvent
示例
var event = FutureEvent<Int>()
event += { value in
print("Awesome int: \(value)")
}
event.invoke(with: 42)
将打印 出色的整型:42
PresentEvent
描述
此事件提供所有 Future
逻辑,但此外还为新的监听器提供最后发出的值。这意味着如果您的已发出值的事件并添加新监听器,那么您的监听器将同时处理以前发出的值。
类型
PresentEvent: Event
PresentEmptyEvent: EmptyEvent
示例
var event = FutureEvent<Int>()
event += { value in
print("Awesome int: \(value)")
}
event.invoke(with: 42)
event += {
print("Old awesome int: \(value)")
}
将打印
出色的整型:42
旧的出色的整型:42
PastEvent
描述
此事件类似于Present,但会向新监听器发出所有之前的消息
类型
过去的事件:事件
示例
var event = FutureEvent<Int>()
event.invoke(with: 0)
event.invoke(with: 1)
event += { value in
print("Awesome int: \(value)")
}
event.invoke(with: 2)
将打印
非常棒的整数:0
非常棒的整数:1
非常棒的整数:2
如何安装
pod 'EventsKit', '~> 1.0.0'