SwiftBus:Swift编写的轻量级事件总线库,支持Combine





项目名称:SwiftBus

项目简介

SwiftBus是一个简单而轻量级的事件总线(Event Bus)库,它使用Swift语言编写,并由Combine框架提供支持。这个库允许开发者在Swift应用中发送和接收自定义事件,无论是基于结构的事件还是简单的命名事件,都可以轻松处理。SwiftBus还支持在不同线程上接收事件,提供了灵活的线程处理选项。

功能特点

  • 自定义事件:支持发送和接收遵循EventRepresentable协议的自定义事件。

  • 命名事件:支持发送和接收简单的命名事件,无需定义复杂的事件结构。

  • 线程灵活性:允许开发者指定在哪个线程上接收事件,支持主线程和后台线程。

  • Combine支持:与Combine框架集成,利用其强大的响应式编程特性。

使用方法

以下是如何在项目中使用SwiftBus的示例代码:

定义和发送自定义事件

import SwiftBus
import Combine

struct RebelsActivityDetectedEvent: EventRepresentable {
    let planet: String
    let distanceInParsecs: Int
}

let eventBus: EventTransmittable = EventBus()
var subscriptions: Set<AnyCancellable> = []

eventBus.onReceive(RebelsActivityDetectedEvent.self) { event in
    print("Detected rebels \(event.distanceInParsecs) parsecs from us on \(event.planet)")
}
.store(in: &subscriptions)

let event = RebelsActivityDetectedEvent(planet: "Hoth", distanceInParsecs: 12)
eventBus.send(event)

发送和接收命名事件

eventBus.onReceive("RebelsActivityDetected") { params in
    print("Detected rebels \(params["distanceInParsecs"]) parsecs from us on \(params["planet"])")
}
.store(in: &subscriptions)

eventBus.send("RebelsActivityDetected", params: ["planet": "Hoth", "distanceInParsecs": 12])

在不同线程上接收事件

eventBus.onReceive(RebelsActivityDetectedEvent.self, performOn: DispatchQueue.main) { _ in
    print("This will be executed on the main thread")
}
.store(in: &subscriptions)

eventBus.onReceive("JumpedToHyperspace", performOn: DispatchQueue.global(qos: .background)) { _ in
    print("This will be executed on the background thread")
}
.store(in: &subscriptions)

安装方法

通过Swift Package Manager将SwiftBus添加到你的项目中,在Package.swift文件中添加以下依赖:

dependencies: [
    .package(url: "https://github.com/mtynior/SwiftBus.git", .upToNextMajor(from: "1.0.0")),
]

许可证

SwiftBus在MIT许可证下发布,详见LICENSE文件。

项目地址

项目位于GitHub上,可以通过以下链接访问:SwiftBus GitHub

或许喜欢

SwiftEasyPop:轻量级SwiftUI自定义弹窗和提示库

SwiftEasyPop是一个轻量级且易于使用的SwiftUI库,用于在Swift应用中显示自定义弹窗和提示,支持iOS 14.0+,兼容暗黑和明亮模式。

最近更新 2024-12-15

SwiftUICustomTagListView:自定义标签列表视图

SwiftUICustomTagListView是一个为iOS和macOS设计的SwiftUI自定义标签列表视图库,支持高度自定义,适用于需要标签功能的任何应用。

最近更新 2024-12-15

FXSwipeAction:SwiftUI库实现独特可定制的滑动操作

FXSwipeAction是一个SwiftUI库,允许在任何SwiftUI视图上轻松添加滑动操作,支持图标和完全自定义,增强用户交互体验。

最近更新 2024-12-15

热榜

Made with in Shangrao,China By 老雷

Copyright © devler.cn 1987 - Present

赣ICP备19009883号-1