Emit

GitHub license GitHub release Documentation

Emit 是一个简单的 Swift 信号库。它允许你发出强类型的事件,并且你无需担心释放订阅。Emit 支持 emit/subscribe(发送/订阅)、map(映射)和 filter(过滤),这使得它非常适合保持你的代码简洁。

Emit 是为 Hootsuite iOS 应用程序开发的。

已弃用通知⚠️

注意:Emit 用户

我们想通知您,Emit 库已被弃用,并将于 2024 年 9 月 1 日起停止维护。做出此决定是经过仔细考虑的结果,原因是现在有更好的替代方案,例如 Combine。

这对您意味着什么

时间表

特性

要求

用法

Signal(信号)

要创建一个信号,你需要指定将传递给订阅闭包的事件类型。 如果你不想包含事件,也可以指定 Void

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

要订阅一个信号,你需要传递一个 owner(所有者)。所有者需要是一个对象(一个 class 的实例,而不是一个 struct)。当所有者被释放时,订阅会自动停止。 你也可以传递一个 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 = "test_email@gmail.com" // 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 在 Apache License, Version 2.0 下发布。 有关详细信息,请参见 LICENSE.md