1.准备工作

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

架构其实相对开发来说还是比较难于下手的东西,概念谁都知道,就是组织好,管理好,使用好自己的代码(代码规范也是重要的一环)

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

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

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

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

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

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

2.1 分为三个部分

壳工程:整个程序的入口  一个产品一个壳工程。壳工程中可随意加子工程(无论多少个),主要用于净化业务。

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

确立一个一个主工程。保证到时候将主工程移动到任何壳工程中都能使用,不致于一拖到工程中就到处报错,然后这里改改,那里删删

子工程:即模块工程

子工程要保证其独立性,这里所说的独立性是其依赖主工程的前提下,于其他子工程互不引用,即a子工程删掉,b子工程照常运行。

每次项目可归并到子工程中,因为子工程一般是按模块分的,而且子工程内部用那种架构(MVC,MVVC...)都是可以的.

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 组件化漫谈的更多相关文章

  1. iOS 组件化

    iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间 ...

  2. 使用CocoaPods创建自己的私有库-iOS组件化第一步

    目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...

  3. iOS 组件化路由框架 WisdomRouterKit 的应用

    [前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之 ...

  4. iOS组件化实现方案

    作者原文iOS组件化 - 路由架构从0到1实战  合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立 ...

  5. iOS组件化思路 <转>

    随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...

  6. iOS组件化思路-大神博客研读和思考

    一.大神博客研读 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的 ...

  7. iOS 组件化 —— 路由设计思路分析

    原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业 ...

  8. iOS 组件化的几篇文章

    随着工程的成长,开发人员的增多,合理的模块划分及低耦合的重要性显得愈发重要.最近在思考这方面的问题,也读了不少通过组件化解耦的文章,这里记录一下. 前 5 篇文章有些关联,建议阅读顺序,1.3.2.4 ...

  9. iOS 组件化方案

    概述 近一年iOS业界讨论组件化方案甚多,大体来说有3种. Protocol注册方案 URL注册方案 Target-Action runtime调用方案 URL注册方案据我了解很多大公司都在采用,蘑菇 ...

随机推荐

  1. 利用CSS背景颜色属性使父级div背景透明同时避免子级标签透明。

    实现背景色透明效果的代码 实现各个浏览器中具备良好的透明特性的效果,IE中使用私有滤镜filter,高端浏览器使用CSS3中的rgba属性. 输入十六进制的颜色值以及透明度,自动在IE的过渡滤镜以及C ...

  2. html标签学习

    1. 标题 : <h1> - <h6> 2. 分割线 : <hr> 3. 加粗: <strong> 4. 斜体: <em> <i> ...

  3. 移动Web触摸与运动解决方案AlloyTouch开源啦

    传送门 Github地址:https://github.com/AlloyTeam/AlloyTouch 简介 AlloyTouch的本质是运动一个数字,把数字的物理变化映射到你想映射的任何属性上.所 ...

  4. shift粘滞键后门创建/复原批处理

    创建shift粘滞键后门: 1 c: 2 3 cd \Windows\System32\ 4 5 rename sethc.exe bak_sethc.exe 6 7 xcopy cmd.exe se ...

  5. DS 工作室

    如果你想租用我,QQ:26959368 价格可以详细谈哦, 1. 企业信息化过程中问题的免费咨询: 2. Office 365.Sharepoint Online .Azure 云的咨询服务. 3. ...

  6. NFR

    你NFR了吗? NFR,即非功能性需求 (Non -Functional Requirements) ,即系统能够完成所期望的工作的性能与质量.具体包括如下内容: – 效率: 软件实现其功能所需要的计 ...

  7. 超简单,spring boot 添加mybatis

    看了很多人写的博客,要么太复杂,要么没有添加xml的方式,自己亲自配置了一下,供各位参考. 项目截图 1.添加pom文件 <!-- 设置mybatis --> <dependency ...

  8. C#中DateTime.Ticks属性及Unix时间戳转换

    1.相关概念 DateTime.Ticks:表示0001 年 1 月 1 日午夜 12:00:00 以来所经历的 100 纳秒数,即Ticks的属性为100纳秒(1Ticks = 0.0001毫秒). ...

  9. xml类型使用注意事项

    xml 的数据类型在平常的开发也是很常用的,燃鹅.也是有一些地方需要留意.今天我就分享几个测试的例子. 使用 xquery.exist (有但不仅仅限于)的注意事项.通常使用来判断节点是否存在,值是否 ...

  10. 安装phpstudy之后发现80端口被占用

    安装phpstudy之后发现80端口被占用: 进入cmd的界面,在输入"netstat -ano",按回车键后,会显示当前电脑中程序占用的端口和程序ID等等信息:看到第一条就是:0 ...