Latest 0.3.0
Homepage https://github.com/LeoMobileDeveloper/QTEventBus
License MIT
Platforms ios 8.0
Authors

QTEventBus

Build Status
Version Platform
License

QTEventBus是一个优雅的iOS事件总线,用来实现“发布-订阅”的消息通信模式。

QTEventBus

  • 支持强类型/弱类型
  • 自动取消订阅
  • 快速
  • 兼容NSNotification
  • 单元测试覆盖
  • 支持AppDelegate解耦

文章:

安装

消息总线:

pod QTEventBus

AppDelegate解耦:

pod QTEventBus/AppModule

系统要求

  • XCode 9 +
  • iOS 8+

使用

新建一个类作为事件,实现协议QTEvent

@interface QTLoginEvent : NSObject<QTEvent>
@property (copy, nonatomic) NSString * userId; //可以携带任意数据
@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];

字符串

有些事件发生的时候并不需要携带参数,这时候用类来传递就显得多余,可以直接直接用字符串来代表事件:

订阅

[QTSubName(self,"ButtonClick") next:^(NSString * event) {

}];

发布

[[QTEventBus shared] dispatch:@"ButtonClick"];

详细文档

许可证

QTEventBus使用 MIT 许可证,详情见 LICENSE 文件。

Latest podspec

{
    "name": "QTEventBus",
    "version": "0.3.0",
    "summary": "u4f18u96c5u7684u5904u7406u5168u5c40u4e8bu4ef6",
    "description": "u4f18u96c5u7684u5904u7406u5168u5c40u4e8bu4ef6,u7c7bu578bu5b89u5168uff0cu652fu6301u540cu6b65/u5f02u6b65u53d1u9001uff0cu540cu6b65/u5f02u6b65u76d1u542c",
    "homepage": "https://github.com/LeoMobileDeveloper/QTEventBus",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Leo": "[email protected]"
    },
    "source": {
        "git": "https://github.com/leomobiledeveloper/QTEventBus.git",
        "tag": "0.3.0"
    },
    "platforms": {
        "ios": "8.0"
    },
    "default_subspecs": "Core",
    "subspecs": [
        {
            "name": "Core",
            "source_files": "Sources/Core/*.{h,m}"
        },
        {
            "name": "AppModule",
            "source_files": "Sources/AppModule/*.{h,m}",
            "frameworks": "UIKit",
            "dependencies": {
                "QTEventBus/Core": []
            }
        }
    ]
}

Pin It on Pinterest

Share This