QTEventBus是一个优雅的iOS事件总线,用来实现“发布-订阅”的消息通信模式。
- 支持强类型/弱类型
- 自动取消订阅
- 快速
- 兼容
NSNotification
- 单元测试覆盖
- 支持AppDelegate解耦
- 支持基于响应链的局部总线
文章:
消息总线:
pod QTEventBus
AppDelegate解耦:
pod QTEventBus/AppModule
基于响应链的事件传递:
pod QTEventBus/UIKit
- XCode 9 +
- iOS 8+
@interface QTLoginEvent : NSObject<QTEvent>
@property (copy, nonatomic) NSString * userId; //可以携带任意数据
@property (copy, nonatomic) NSString * userName; //可以携带任意数据
@end
QTSub(object,className)宏的作用是在object的生命周期内,订阅className事件,当object释放的时候自动取消订阅。
//注意eventBus会持有这个block,需要弱引用object
[QTSub(self,QTLoginEvent) next:^(QTLoginEvent * event) {
NSLog(@"%ld",event.userId);
}];
如果需要在主线程订阅,使用宏QTSubMain
QTLoginEvent * event;
[QTEventBus.shared dispatch:event];
QTEventBus使用 MIT 许可证,详情见 LICENSE 文件。