EventBus-iOS 介绍
EventBus for iOS non-ARC
有两种事件: 1. SyncEvent 类似于使用NotificationCenter发出的通知,不会存储在EventBus上,
事件发生时会直接调用同步事件订阅者(id< EventSyncSubscriber >)。 2. AsyncEvent
异步事件,具有一定的生命周期(event.life),会存储在EventBus上(EventBus具有一定的容量) 异步事件需要异步订阅者(id<
EventAsyncSubscriber >)主动去读取事件。
使用:
订阅者:
-
标记自己实现< EventAsyncSubscriber > 或 < EventSyncSubscriber >接口, 表明自己为订阅者;
-
在适当时刻使用宏EVENT_SUBSCRIBE(self,eventName)订阅eventName事件,一般可以在init 或 controller的 viewDidLoad方法中;
-
事件发生时会回调< EventSubscriber >接口中的方法- (void)eventOccurred: (Nsstring )eventName event:(Event )event, 对于异步订阅者,需要使用EVENT_CHECK(self,eventName)从EventBus中读取事件,如果有事件,eventOccurred方法会立刻得到调用。
-
在适当时刻使用宏EVENT_UNSUBSCRIBE(self,eventName)解订eventName事件,一般可以在dealloc中.
发布者:
-
标记自己实现< EventAsyncpublisher > 或 < EventSyncpublisher >接口,表明自己为发布者;
-
在事件发生时使用宏EVENT_PUBLISH(self,eventName)发布eventName事件,或使用EVENT_PUBLISH_WITHDATA(self,eventName,eventData) 在发布事件同时传递eventData数据.
另外: 代码中使用了 MAZeroingWeakRef 来实现弱引用, 地址:
https://github.com/mikeash/MAZeroingWeakRef
EventBus-iOS 官网
https://github.com/github-xiaogang/EventBus-iOS
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。