VVModularity 0.1.0

VVModularity 0.1.0

Maintained by Valo Lee.



  • By
  • pozi119

VVModularity

CI Status Version License Platform

功能

  • 模块化中间件
  • 解耦,模块无需包含本中间件头文件
  • URL支持
  • 异步操作,可设置超时,默认30s超时

安装

VVModularity支持CocoaPods. 请在 Podfile中加入:

pod 'VVModularity'

用法

模块

+performTask:+performAction:parameters:progress:success:failure:二者实现其一; 其中+performTask:需要包含VVModularity.h.

+cancelAction: performTask方式可以在操作中定义task.cancel()达到同样目的; 可选实现; 若不实现, 则当Action超时时,不会取消模块的操作,但是最后也不会处理操作结果.

+supportedActions 可选实现; 若实现,则会先检查action是否被模块支持.

示例:

+ (void)performAction:(NSString *)action
           parameters:(nullable id)parameters
             progress:(nullable NSProgress *)progress
              success:(nullable void (^)(id __nullable responseObject))success
              failure:(nullable void (^)(NSError *error))failure{
    if([action isEqualToString:@"aa"]){
        NSInteger total = 10;
        __block NSUInteger i = 0;
        [NSTimer scheduledTimerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
            i ++;
            if (progress) {
                progress.completedUnitCount =  i * progress.totalUnitCount / total;
            }
            NSLog(@"VVModuleAA-->: %@", @(i));
            if(i >= total){
                !success ? : success(progress);
                [timer invalidate];
            }
        }];
    }
}

调用模块

需包含VVModularity.h头文件

    VVModuleTask *task = [VVModuleTask taskWithTarget:@"ma" action:@"aa"];
    task.progress = [NSProgress progressWithTotalUnitCount:100];
    [task setSuccess:^(id responseObject) {
        NSLog(@"response: %@", responseObject);
    }];
    [VVModularity performModuleTask:task];
    
    //操作成功或失败无需处理
    [VVModularity performTarget:@"VVModuleBB" action:@"bb" parameters:nil]

URL方式,请在AppDelegate中加入相应代码:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    return [VVModularity openURL:url completionHandler:nil];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation{
    return [VVModularity openURL:url completionHandler:nil];
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{
    return [VVModularity openURL:url completionHandler:nil];
}

作者

pozi119, [email protected]

协议

VVModularity 被许可在 MIT 协议下使用。查阅 LICENSE 文件来获得更多信息。