EventsKit 1.0.0

EventsKit 1.0.0

Kravchenkov Alexander 维护。



EventsKit 1.0.0

  • 作者:
  • Alexander Kravchenkov

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'