1.1.1. 2.使用中间件

本文只介绍ObjC如何使用CTMediator。

一、新建业务组件Target

通过下载CTMediator的Demo,每个组件都会有一个Target的类,用于提供对外方法的实现。

Target类的命名规则:“Target_[lib name]”,例如:Target_A,A是组件名称,Target是固定不变的。

Target方法命名规则:“Action_[method name]”,例如:Action_ViewController,ViewController是方法名称,Action是固定不变的。

@implementation Target_testlib

- (UIViewController *)Action_OneKeyLoginVC:(NSDictionary *)params
{
    typedef void (^CallbackType)(NSString *);
    CallbackType callback = params[@"callback"];
    if (callback) {
        callback(@"success");
    }
    UTOneKeyLoginVC *viewController = [[UTOneKeyLoginVC alloc] init];
    return viewController;
}

@end

二、新建业务组件对外接口

CTMediator是通过Target-Action的方式实现,所以我们只需要给CTMediator增加Category,在Category写组件对外的方法和实现即可。

在git服务器创建中间件仓库,通过pod lib create [中间件名称]创建中间件工程。

编辑podspec文件,增加s.dependency 'CTMediator',然后执行pod install,完成CTMediator的依赖。

通过新增CTMediator的分类,实现组件对外的接口。

分类的命名:CTMediator+[lib name],例如:CTMediator+testlib.h。

方法的命名:[lib name]_[method name],例如:utlogin_OneKeyLoginVCWithCallback。

为CTMediator增加分类,编写业务组件的接口方法:

@implementation CTMediator (utlogin)

/// 一键登录页面
/// @param callback 回调
- (UIViewController *)utlogin_OneKeyLoginVCWithCallback:(void(^)(NSString *result))callback;
{
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
    params[@"callback"] = callback;
    return [self performTarget:@"utlogin" action:@"OneKeyLoginVC" params:params shouldCacheTarget:NO];
}

@end

这样就完成了组件对外的接口了,宿主工程可以通过依赖中间件直接调用到组件的Target_testlib的实现。

三、新建宿主工程

使用xcode创建宿主工程,在通过pod init创建Podfile文件。

using-cocoapods

编辑Podfile文件:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

source '私有仓库地址'
source 'https://github.com/CocoaPods/Specs.git'

target 'utopia' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  use_modular_headers!

  # Pods for utopia
  pod 'testlib'#业务组件
  pod 'testmediatro'#中间件

end

执行pod install

results matching ""

    No results matching ""