当前位置:   article > 正文

ios 发布订阅事件通讯 – SwiftEventBus

ios 发布订阅事件通讯 – SwiftEventBus

SwiftEvenBus可以在不需要组件间显式的互相了解的情况下提供组件间的发布订阅式的通讯。

特点
1.简化组建之间的通讯
2.解耦事件发送者和接收者
3.避免复杂和容易出错的依赖关系和生命周期问题
4.使你的代码更简单
5.快速
6.轻量级
7.安全线程

安装

pod 'SwiftEventBus', :tag => '3.0.1', :git => 'https://github.com/cesarferreira/SwiftEventBus.git'
  • 1

使用方法
1:准备订阅
用户实现了事件处理方法,这个方法在事件接收时将会被调用。

SwiftEventBus.onMainThread(target, name: "someEventName") { result in // UI thread } // or SwiftEventBus.onBackgroundThread(target, name:"someEventName") { result in // API Access }
  • 1

2:发布事件
从你的代码任意部分发布一个事件。所有匹配事件类型的订阅服务器都将接收到

SwiftEventBus.post("someEventName")
  • 1

带参数的Eventbus

发布事件

SwiftEventBus.post("personFetchEvent", sender: Person(name:"john doe"))
  • 1

参数预测

SwiftEventBus.onMainThread(target, name:"personFetchEvent") { result in let person : Person = result.object as Person
    println(person.name) // will output "john doe" }
  • 1
  • 2

从后台线程向主线程发布事件

@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)" 
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注销

从目标中移除所有观察者

SwiftEventBus.unregister(target)
  • 1

从目标中移除所有相同名称的观察者

SwiftEventBus.unregister(target, "someEventName")
  • 1

原文地址:https://codeday.me/news/20170601/19797.html

SwiftEventBus Github地址:https://github.com/cesarferreira/SwiftEventBus

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/230691
推荐阅读
相关标签
  

闽ICP备14008679号