Emit 1.0.0

Emit 1.0.0

Brett StoverMobile 维护。



Emit 1.0.0

  • 作者:
  • Hootsuite 媒体

Emit

GitHub license GitHub release Documentation

Emit 是一个简单的 Swift 信号库。它允许您发出强类型事件,您无需担心订阅的销毁。Emit 支持 emit/subscribe、map 和 filter。这使得它非常适合保持代码简单。

Emit 已为 Hootsuite iOS 应用开发。

特性

  • 强类型事件
  • 信号的映射和过滤
  • 可观察的变量

要求

  • iOS 10.0+、macOS 10.12+、tvOS 10.0+
  • Xcode 9.0+

使用

信号

创建信号时,您需要指定传递给订阅闭包的事件类型。如果您不希望包含事件,也可以指定 Void

// Create a signal
let loginCompleteSignal = Signal<Bool>()

要订阅一个信号,您需要传递一个所有者。所有者必须是一个对象(一个类的实例,而不是一个结构体的实例)。当所有者释放时,订阅自动停止。您还可以传递您希望闭包在其中调用的 .DispatchQueue,默认为 .DispatchQueue.main

// Subscribe to it
loginCompleteSignal.subscribe(owner: self) { result in
    // Handle signal
}

要触发一个信号,只需调用带有事件值的 emit 即可。注意,订阅者将在其指定队列的下一次运行循环中被调用。

// Emit an event
loginCompleteSignal.emit(true)

ObservableVariable

可观察变量将值和信号组合在一起。每当值改变时,都会发射信号。

let email = ObservableVariable("")

email.signal.subscribe(owner: self) { newEmail in
    // Update UI with new email
}

email.value = "[email protected]" // This will emit the signal to update the UI

示例项目

请参阅提供的示例项目,以了解 Emit 框架的示例用法。

安装

Emit 可以使用 CarthageCocoaPods 进行安装。

Carthage

要使用 Carthage 将 Emit 集成到您的 Xcode 项目中,请在 Cartfile 中指定它

github "hootsuite/Emit"

CocoaPods

首先,将以下行添加到您的 Podfile 中

pod 'Emit'

其次,安装 Emit 到您的项目中

pod install

未来工作

我们对使用 Emit 取得的成果非常满意,但还有一些事情在我们的愿望清单上。

  1. 将信号组合到 ObservableVariable 中,以便只调用一个闭包。类似于 RxSwift CombineLatest。
  2. 只有当值实际不同时才触发 ObservableVariable 信号。目前即使值相同也会在 didSet 上触发。

许可证

Emit 在 Apache License, Version 2.0 许可下发布。有关详细信息,请参阅 LICENSE.md