赞
踩
SwiftEvenBus可以在不需要组件间显式的互相了解的情况下提供组件间的发布订阅式的通讯。
特点
1.简化组建之间的通讯
2.解耦事件发送者和接收者
3.避免复杂和容易出错的依赖关系和生命周期问题
4.使你的代码更简单
5.快速
6.轻量级
7.安全线程
安装
pod 'SwiftEventBus', :tag => '3.0.1', :git => 'https://github.com/cesarferreira/SwiftEventBus.git'
使用方法
1:准备订阅
用户实现了事件处理方法,这个方法在事件接收时将会被调用。
SwiftEventBus.onMainThread(target, name: "someEventName") { result in // UI thread } // or SwiftEventBus.onBackgroundThread(target, name:"someEventName") { result in // API Access }
2:发布事件
从你的代码任意部分发布一个事件。所有匹配事件类型的订阅服务器都将接收到
SwiftEventBus.post("someEventName")
带参数的Eventbus
发布事件
SwiftEventBus.post("personFetchEvent", sender: Person(name:"john doe"))
参数预测
SwiftEventBus.onMainThread(target, name:"personFetchEvent") { result in let person : Person = result.object as Person
println(person.name) // will output "john doe" }
从后台线程向主线程发布事件
@IBAction func clicked(sender: AnyObject) {
count++ SwiftEventBus.post("doStuffOnBackground")
}
@IBOutlet weak var textField: UITextField! var count = 0 override func viewDidLoad() { super.viewDidLoad()
SwiftEventBus.onBackgroundThread(self, name: "doStuffOnBackground") { notification in println("doing stuff in background thread")
SwiftEventBus.postToMainThread("updateText")
}
SwiftEventBus.onMainThread(self, name: "updateText") { notification in
self.textField.text = "\(self.count)"
}
注销
从目标中移除所有观察者
SwiftEventBus.unregister(target)
从目标中移除所有相同名称的观察者
SwiftEventBus.unregister(target, "someEventName")
原文地址:https://codeday.me/news/20170601/19797.html
SwiftEventBus Github地址:https://github.com/cesarferreira/SwiftEventBus
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。