当前位置: 首页 > 软件库 > iOS代码库 > 其他(Others) >

EventBus-iOS

iOS 的 EventBus
授权协议 未知
开发语言 Objective-C
所属分类 iOS代码库、 其他(Others)
软件类型 开源软件
地区 国产
投 递 者 齐阳
操作系统 iOS
开源组织
适用人群 未知
 软件概览

iOS 的 EventBus.

EventBus使用起来类似于NSNotification:通过订阅和发布消息实现模块之间的通信, 这种通信机制降低了各个模块之耦合度,非常灵活。 EventBus除了提供系统NSNotification的基础功能外,还提供了异步消息,这种消息可以存储在EventBus上,可以实现异步读取,延时读取,条件读取。

有两种事件:

  1. SyncEvent 类似于使用NotificationCenter发出的通知,不会存储在EventBus上, 事件发生时会直接调用同步事件订阅者(id< EventSyncSubscriber >)。
  2. AsyncEvent 异步事件,具有一定的生命周期(event.life),会存储在EventBus上(EventBus具有一定的容量) 异步事件需要异步订阅者(id< EventAsyncSubscriber >)主动去读取事件。

使用:

订阅者:

  1. 标记自己实现< EventAsyncSubscriber > 或 < EventSyncSubscriber >接口, 表明自己为订阅者;
  2. 在适当时刻使用宏EVENT_SUBSCRIBE(self,eventName)订阅eventName事件,一般可以在init 或 controller的 viewDidLoad方法中;
  3. 事件发生时会回调< EventSubscriber >接口中的方法- (void)eventOccurred: (NSString *)eventName event:(Event *)event, 对于异步订阅者,需要使用EVENT_CHECK(self,eventName)从EventBus中读取事件,如果有事件,eventOccurred方法会立刻得到调用。
  4. 在适当时刻使用宏EVENT_UNSUBSCRIBE(self,eventName)解订eventName事件,一般可以在dealloc中.

发布者:

  1. 标记自己实现< EventAsyncPublisher > 或 < EventSyncPublisher >接口,表明自己为发布者;
  2. 在事件发生时使用宏EVENT_PUBLISH(self,eventName)发布eventName事件,或使用EVENT_PUBLISH_WITHDATA(self,eventName,eventData) 在发布事件同时传递eventData数据.

另外:  代码中使用了 MAZeroingWeakRef 来实现弱引用, 地址: https://github.com/mikeash/MAZeroingWeakRef

  • SwiftEvenBus可以在不需要组件间显式的互相了解的情况下提供组件间的发布订阅式的通讯。 特点 1.简化组建之间的通讯 2.解耦事件发送者和接收者 3.避免复杂和容易出错的依赖关系和生命周期问题 4.使你的代码更简单 5.快速 6.轻量级 7.安全线程 安装 pod 'SwiftEventBus', :tag => '3.0.1', :git => 'https://github.com/c

  • ionic4-EventBus(事件总线) 环境 node 10.15.0 ionic 4.12.0 cordova 9.0 # platforms cordova-android:8.0.0 cordova-ios: 5.0.0 欢迎访问我的专栏: ionic4 混合开发实战-csdn ionic4 混合开发实战-简书 前言: AngularJs 中,我们可以使用 b r o a d c a

  • EventBus概要 EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式。这种方式的实现不仅仅局限于前端,在iOS中的消息消息中心也是如此实现。 设计模式:订阅者发布者模式,这种设计模式在前端很常见。 API的设计: 2.1 只能构造一个消息对象 2.2 on('msgName', func)订阅消息,msgName:订阅的消息名称 func: 订阅的消息 2.3 one

 相关资料
  • EventBus 是一个为 C++11 编写的轻量级同步事件框架。 示例代码: Player player1("Player 1", 0, 0, 0); // Player instance with a name and default positionPlayerChatEvent e(this, &player1, "This is a chat message"); // Create t

  • Govern EventBus 是一个历经四年生产环境验证的事件驱动架构框架, 通过事件总线机制来治理微服务间的远程过程调用。 使用本地事务来支持微服务内强一致性,事件总线来实现微服务间的最终一致性,另外还提供了事件发布/订阅失败的自动补偿机制。 执行流 安装 初始化 db create table compensate_leader( name varchar(16) not null

  • EventBus是一个观察者模式的实现。 背景介绍 如果你学习过设计模式,那么当想通知其他组件某些事情发生时你一定会使用观察者模式。好了,既然能想到这个设计模式,那么就来看一个屌爆天的Android开源框架EventBus。主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息。他的最牛逼优点是开销小,代码简洁,解耦代码

  • 一、EventBus简介 EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。 作为一个消息总线主要有三个组成部分: 事件(Event):可以是任意类型的对象。通过事件的发布者将事件进行传递。 事件订阅者(Subscriber):接收特定的事件。 事件发布者(Publisher):用于通知 Subscriber

  • 我正在使用Guava的EventBus启动一些处理并报告结果。下面是一个非常简单的可编译示例: 发生的情况是,由于我已经分派了顶级事件,其余的事件只是被推送到队列的末尾。我希望它的行为与.NET事件类似,在该事件中,调用事件直到所有处理程序完成后才返回。 我不太明白这样实现的原因。当然,可以保证事件是有序的,但是周围代码的顺序会被完全扭曲。 有没有什么方法可以让总线按照描述的方式运行并产生所需的输

  • EventBus消息接收者注册流程 EventBus Post流程 postToSubscription()在这个方法中,实现了从发布者到调用者的调用过程。在这里有很重要的几个分支: Main:在主线程中执行。 如果当前线程(post线程)是主线程,则直接invoke; 如果当前线程(post线程)不是主线程,则将消息放入一个HandlerPosterPendingPostQueue的消息队列中,