CTMediator是支持url方案的,调用performActionWithUrl即可,url格式为aaa://targetA/actionB?id=1234
一、准备工作
1、私有配置脚本https://gitee.com/RichieQuan/config-private-pod,casatwy 大神的配置脚本https://github.com/casatwy/ConfigPrivatePod
2、将ConfigPrivatePod配置脚本放在和需要实施组件化的工程同一级目录,后面的组件工程路径也是放在同一级目录,目录结构如下
Project
├── ConfigPrivatePod(配置脚本)
├── MainProject(现有工程)
├── A (组件工程)
├── B (组件工程)
├── .. (组件工程)
3、创建组件仓库
二、组件化实施
组件化是循序渐进的,步骤类似。现在以把业务A抽出来作为组件,那么我们需要为此创建两个私有pod:A业务Pod(以后简称A Pod)、方便其他人调用A业务的CTMediator category的pod(以后简称A_Category Pod)。这里的A_Category Pod的本质只是一个方法,它对A Pod不存在任何依赖。
(一)创建A pod
1、用xcode创建工程A,保存到和现有工程同一级目录
2、通过脚本配置私有pod
a、cd到ConfigPrivatePod目录,
b、执行./config_target.sh
,根据提示分别填入私有A Pod的仓库地址htpps、ssh地址、主页地址
3、编写Target-Action相关代码
image.png1、将主工程中A业务的代码拷贝到工程A的Source文件夹目录下(
image.png该目录里面的代码是A pod发布的内容
),在Target_A.m写Action相关方法供A_Category调用
2、在Category目录下,CTMediator+A.{h/m}编写调用Target_A代码,这块代码后面是拷贝到A_Category Pod里面发布的
3、在ViewController.m里可以写下测试代码
image.png
image.png
4、验证A.podspec是否正确,输入命令如果A业务有依赖私有库,需要在--sources写入私有仓库地址,不然会提示私有库找不到
pod lib lint --sources='https://gitee.com/RichieQuan/PrivatePodsec.git,https://github.com/CocoaPods/Specs.git'
5、提交代码,HEAD默认指向当前开发分支
cd到A工程目录下
git add .
git commit -m '说明'
git push origin HEAD
6、发版本
cd到A工程的upload.sh所在目录
执行 ./upload.sh
(二)创建A_Category pod
1、用xcode创建工程A_Category,保存到和现有工程同一级目录
2、通过脚本配置私有pod
a、cd到ConfigPrivatePod目录,
b、执行./config_category.sh
,根据提示分别填入私有A_Category Pod的仓库地址htpps、ssh地址、主页地址
3、删除工程A_Category下的Category目录下的文件, 将A工程Category目录下的代码拷贝到A_Category工程的Category文件夹中
4、验证A.podspec是否正确,输入命令如果A业务有依赖私有库,需要在--sources写入私有仓库地址,不然会提示私有库找不到
pod lib lint --sources='https://gitee.com/RichieQuan/PrivatePodsec.git,https://github.com/CocoaPods/Specs.git'
5、提交代码,HEAD默认指向当前开发分支
cd 到工程A_Category目录下
git add .
git commit -m '说明'
git push origin HEAD
6、发版本
cd到A_Category工程的upload.sh所在目录
执行 ./upload.sh
三、声明
本文借鉴casatwy
大神的文章和脚本,原文地址为https://casatwy.com/modulization_in_action.html
网友评论