EasyEventBus
ios 的发布/订阅 EventBus。
安装
Cocoapods
pod 'EasyEventBus'
Swift Package Manager
从 Xcode 11 开始,您可以使用 Swift Package Manager 将 EasyEventBus 添加到您的项目中。
- 选择文件 > Swift 包 > 添加包依赖。在“选择包仓库”对话框中输入
https://github.com/supermanyqq/EasyEventBus.git
- 在下一页,指定版本解析规则为“直到下一个主要版本”,其最早版本为“0.0.5”。
- Xcode 检查来源并解析版本后,您可以选择“EasyEventBus”库并将其添加到您的应用程序目标。
使用方法
1. 创建一个事件对象
对于某类事件,您需要创建一个对象,采用EasyEvent
协议以提供事件键
struct Person: EasyEvent {
static var key: String {
return "PostEventKey"
}
}
// or
// Passing some data to Observer
struct Person: EasyEvent {
static var key: String {
return "PostEventKey"
}
let name: String
let age: Int
}
2. 发布事件
您可以从代码的任何部分发布事件。
let person = Person(name: "Jack", age: 20)
// All subscribers matching the Person.key will receive it
EasyEventBus.shared.post(event: person)
// or
// Post an event to the assign observer
EasyEventBus.shared.post(event: person, to: Observer.self)
3. 订阅事件
要订阅事件,您需要将事件类型和观察者类型传递给方法
// subscribe on main queue by default
EasyEventBus.shared.subscribe(event: Person.self, target: Observer.self) { (person) in
// do someting with Person object on main queue
print("name: \(person.name), age: \(person.age)") // name: Jack, age: 20
}
// or
// assign a queue to subscribe event
EasyEventBus.shared.subscribe(event: Person.self, target: Observer.self, queue: .global) { (person) in
// do someting with Person object on global queue
print("name: \(person.name), age: \(person.age)") // name: Jack, age: 20
}
4. 删除观察者
// Remove all subscribers matching the Person.key
EasyEventBus.shared.remove(event: Person.self)
// or
// Remove all subscribers that on assign Observer
EasyEventBus.shared.remove(target: Observer.self)
// or
// Remove all subscribers matching Person.key that on assign Observer
EasyEventBus.shared.remove(event: Person.self, for: ViewController.self)
// or
// Remove all subscribers
EasyEventBus.shared.removeAllObservers()
许可证
EasyEventBus在MIT许可证下发布。详细信息请见LICENSE。