Bulb 1.0.3

Bulb 1.0.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年12月

ilove163维护。



Bulb 1.0.3

  • 作者
  • fanfei

更丰富、更强大的通知框架

特性

  • 信号对象化,重复自测以创建信号
  • 多重触发信号组合
  • 信号跟踪
  • 取消信号
  • 多状态信号
  • 弱数据封装,所以Bulb不会进行强引用
  • 信号过滤
  • 您可以查看信号的原始值
  • 有一个信号状态记忆列表,您决定是否允许在触发时从列表中恢复数据
  • 全面的单元测试覆盖率

要求

  • iOS 8.0 / watchOS 2.0 / Mac OS X 10.9

快速开始

创建一个新的信号,每个信号都是BulbBoolSignal或BulbMutiStatusSignal子类对象。

两个步骤

  • 子类化
  • 添加描述
// BulbConnectToWifiSignal.h
#import "BulbBoolSignal.h"

@interface BulbConnectToWifiSignal : BulbBoolSignal

@end

// BulbConnectToWifiSignal.m
#import "BulbConnectToWifiSignal.h"

@implementation BulbConnectToWifiSignal

+ (NSString *)description
{
    return @"BulbConnectToWifiSignal will be fired when connect to wifi";
}

@end

注册信号,可以触发一次

[[Bulb bulbGlobal] registerSignal:[BulbConnectToWifiSignal signal] block:^(id firstData, NSDictionary<NSString *, BulbSignal *> *signalIdentifier2Signal) {
    // do wifi work 
}];

触发信号

[[Bulb bulbGlobal] fire:[BulbConnectToWifiSignal signal] data:@"firstData"];

注册多个信号

[[Bulb bulbGlobal] registerSignals:@[[BulbConnectToWifiSignal signal], [BulbDataPrepareCompleteSignal signal]] block:^(id firstData, NSDictionary<NSString *, BulbSignal *> *signalIdentifier2Signal) {
    // wifi and data prepare compelete do something
}];

注册永久信号,可以多次触发

[[Bulb bulbGlobal] registerSignal:[BulbConnectToWifiSignal signal] foreverblock:^BOOL(id firstData, NSDictionary<NSString *, BulbSignal *> *signalIdentifier2Signal) {
    // do wifi work
    return YES; // return yes if you want to continue
}];

高级主题

过滤支持

您可以选择在一些情况下过滤信号,信号相当于没有发生

[[Bulb bulbGlobal] registerSignal:[BulbConnectToWifiSignal signal] block:^(id firstData, NSDictionary<NSString *, BulbSignal *> *signalIdentifier2Signal) {
        // do wifi work
 } filterBlock:^BOOL(BulbSignal *signal) {
      if ([signal.data isEqualToString:@"data1"]) {
          return YES; // return yes if you want to filter
      }
      return NO;
}];
[[Bulb bulbGlobal] fire:[BulbConnectToWifiSignal signal] data:@"data1"]; // this signal is equivalent to not fire
[[Bulb bulbGlobal] fire:[BulbConnectToWifiSignal signal] data:@"data2"];

原始状态

您可以查看信号到原始状态以处理一些更改逻辑

[[Bulb bulbGlobal] registerSignal:[BulbNetReachableSignal signalWithStatus:@"wifi"] foreverblock:^(id firstData, NSDictionary<NSString *,BulbSignal *> *signalIdentifier2Signal) {
   if ([[signalIdentifier2Signal objectForKey:[BulbNetReachableSignal identifier]].originStatus isEqualToString:@"wwlan"]) {
            // do work when wwlan -> wifi
   }
   return YES;
}];

// no work to do   
[[Bulb bulbGlobal] fire:[BulbNetReachableSignal signalWithStatus:@"no reachable"] data:nil];
[[Bulb bulbGlobal] fire:[BulbNetReachableSignal signalWithStatus:@"wifi"] data:nil];

// do work
[[Bulb bulbGlobal] fire:[BulbNetReachableSignal signalWithStatus:@"wwlan"] data:nil];
[[Bulb bulbGlobal] fire:[BulbNetReachableSignal signalWithStatus:@"wifi"] data:nil];

信号跟踪

以下将打印所有定义的信号,以及信号的注册和发生的历史

NSString* allSignals = [[BulbRecorder sharedInstance] allSignals];
NSLog(@"%@", allSignals);

BULB_RECORDER需要添加到预宏

通信

  • 如果您发现了错误,请通过问题或通过拉取请求提交修复。
  • 如果您有功能请求,请通过问题或通过拉取请求提交实现或通过电子邮件[email protected]联系我。
  • 如果您希望贡献,请在master分支上提交拉取请求。

许可证

Bulb是在MIT许可证下发布的。有关更多信息,请参阅LICENSE文件。