EasyEventBus 0.0.5

EasyEventBus 0.0.5

supermanyqq 维护。



  • By
  • kmqq

EasyEventBus

ios 的发布/订阅 EventBus。

安装

Cocoapods

pod 'EasyEventBus'

Swift Package Manager

从 Xcode 11 开始,您可以使用 Swift Package Manager 将 EasyEventBus 添加到您的项目中。

  1. 选择文件 > Swift 包 > 添加包依赖。在“选择包仓库”对话框中输入 https://github.com/supermanyqq/EasyEventBus.git
  2. 在下一页,指定版本解析规则为“直到下一个主要版本”,其最早版本为“0.0.5”。
  3. Xcode 检查来源并解析版本后,您可以选择“EasyEventBus”库并将其添加到您的应用程序目标。

test

使用方法

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。