iOS 组件化漫谈

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 组件化漫谈相关的知识,希望对你有一定的参考价值。

1.准备工作

   由于工程越来越大,里面的文件也越来越多。很多时候merge代码的时候工程文件起了冲突之后,若 .xcodeproj文件冲突 打开之后很难以修改。

   故想到了模块化程序,于是乎就去网上找资料

   蘑菇街 安居客  Small  (里面都有demo,安居客的看后之后简单一点)

  大致差不多就是URL的格式 scheme://host/path?query 

   1.启动的时候注册相应的url host为相应的模块名

   2.需要的时候直接使用路由调用url的方法

 

 

2.CTMediator概述(现未生成子工程,所以是以文件夹的方式代替工程)

   2.1 分为三个部分

        壳工程:整个程序的入口

        主工程:lib库(网络工具,相册工具,文件服务,路由)

        子工程:即模块工程

 

    2.2 CTMediator工作原理

         1. + (instancetype)sharedInstance;

             路由单例对象

         2. - (id)performActionWithUrl:(NSURL *)url completion:(void(^)(NSDictionary *info))completion;

             调用之后可返回一个控制器对象,传入url的格式如 hgl://message/chat?key=value (message:自模块名,chat:具体要指向的控制器)

         3. - (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params;

              该方法比方法2更加快捷,可以让开发人员更加快速的理解   [self performTarget:@"message"   action:@"chat"  params:@{@"key":@"value"}];

         4.所有模块都必须有一个路由接收器(即入口)

              4.1接收器类名 Target_模块名  (Target 也可以换成你喜欢的单词 定义好之后告诉其他人就行,别人也好按照这个规范来)

              4.2接收器里面的方法名  - (UIViewController *)Action_xx:(NSDictionary *)param; (xx 代表某个控制器)

以上是关于iOS 组件化漫谈的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之组件化架构漫谈

#yyds干货盘点#组件化漫谈

漫谈软件分层架构

单向数据流-从共享状态管理:flux/redux/vuex漫谈异步数据处理

组件化架构[转]

微服务和容器技术漫谈