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 代表某个控制器)

时间: 2024-12-19 13:06:23

iOS 组件化漫谈的相关文章

iOS组件化相关资料

// 基于 CocoaPods 和 Git 的 iOS 工程组件化实践 1)https://skyline75489.github.io/index.html // 模块与解藕 2)https://blog.cnbluebox.com/blog/archives/ // iOS组件化思想 3)http://casatwy.com/ // iOS组件化相关资料 4)http://www.jianshu.com/p/34f23b694412 // AOP 技术 5)https://github.co

iOS 组件化架构漫谈

组件化架构漫谈 前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是要根据公司具体的业务需求设计架构. 在学习组件化架构的过程中,从很多高质量的博客中学到不少东西,例如蘑菇街李忠.casatwy.bang的博客.在学习过程中也遇到一些问题,在微博和QQ上和一些做iOS的朋友进行了交流,非常感谢这些朋友的帮助. 本篇文章主要针对于之前蘑菇街提出的组件化

iOS 组件化方案

概述 近一年iOS业界讨论组件化方案甚多,大体来说有3种. Protocol注册方案 URL注册方案 Target-Action runtime调用方案 URL注册方案据我了解很多大公司都在采用,蘑菇街 App 的组件化之路(http://limboy.me/tech/2016/03/10/mgj-components.html)蘑菇街的Limboy在这篇博客中做了很详尽的阐述 Target-Action runtime调用方案Casa在 iOS应用架构谈 组件化方案(http://casatw

Category 特性在 iOS 组件化中的应用与管控

背景 iOS Category功能简介 Category 是 Objective-C 2.0之后添加的语言特性. Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法.在 Objective-C(iOS 的开发语言,下文用 OC 代替)中的具体体现为:实例(类)方法.属性和协议. 除了引用中提到的添加方法,Category 还有很多优势,比如将一个类的实现拆分开放在不同的文件内,以及可以声明私有方法,甚至可以模拟多继承等操作,具体可参考

iOS组件化开发-发布私有库

创建远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo remove 本地索引库名称 执行命令 添加远程索引库`KTPodSpecs`克隆到本地 原文地址:https://www.cnblogs.com/CoderHong/p/11217312.html

iOS开发之组件化架构漫谈

前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是要根据公司具体的业务需求设计架构. 在学习组件化架构的过程中,从很多高质量的博客中学到不少东西,例如蘑菇街李忠.casatwy.bang的博客.在学习过程中也遇到一些问题,在微博和QQ上和一些做iOS的朋友进行了交流,非常感谢这些朋友的帮助. 本篇文章主要针对于之前蘑菇街提出的组件化方案,以及cas

iOS架构组件化

前言 本文简书地址:http://www.jianshu.com/p/2d89f55fc2c4 当一个App只有几个人开发的时候,很容易就会在一个单项目中开发.但当App开发人数越来越多,甚至几百人,十几个不同BU都在协调开发同一个App的时候,就必须对架构进行组件化,才能方便开发.本文主要基于手机淘宝的一次架构探索:手机淘宝客户端架构探索实践,基于此文进行的一些学习和探索,写一篇文章给自己梳理一下. 组件化的目的 首先,第一个问题,为何需要组件化? 如果依旧是单工程项目,或者是多工程引入同一个

iOS 从零到一搭建组件化项目框架

随着公司业务需求的不断迭代发展,工程的代码量和业务逻辑也越来越多,原始的开发模式和架构已经无法满足我们的业务发展速度了,这时我们就需要将原始项目进行一次重构大手术了.这时我们应该很清晰这次手术的动刀口在哪,就是之前的高度耦合的业务组件和功能组件,手术的目的就是将这些耦合拆分成互相独立的各个组件. 工程效果预览 组件化工程示例项目地址 组件化开源项目Git仓库地址 下面我们围绕这几个问题来展开讲解 为什么要用组件化,它给我们带来哪些优势 各个组件该如何进行拆分,拆分的颗粒度该如何控制 如何从零到一

iOS代码组件化--利用cocoaPods创建私有库

如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的模块对应的代码库,将会大大降低冲突的风险,而且组件化能够很好的给工程解耦. 组件化的第一步就是创建自己的仓库,公司的话需要搭建并维护私有库. 1.查看本地索引库 我们用cocoaPods 的时候,默认使用的是cocoaPods自带的索引库 终端中使用命令 $ pod repo 查看有哪些索引库,这里