ios 发布订阅事件通讯 – SwiftEventBus

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值