首先找一个可以创建私有仓库的平台,比如coding.net
首先创建一个远程索引仓库
创建好后添加到本地
可以在本地pod repo查看当前已有索引库
pod repo add YJTestSpecs https://git.coding.net/zhangyjcoding/YJTestSpecs.git //添加到本地
成功的话,再次查看pod repo
索引库创建好以后就可以创建你自己的私有仓库了
现在托管平台创建一个空的仓库,然后在本地创建一个pod模版工程
pod lib create YJTestPod
rm -r ReplaceMe.swift //删除无用代码
touch test.swift //添加自己的代码
cd ..
cd..
cd Example
pod install
重新pod成功后,修改对应的podspec文件
vim YJTestPod.podspec
修改完之后,提交代码到远程
git add .
git commit -m 'xxx'
git remote add origin https://git.coding.net/zhangyjcoding/YJTestPod.git //关联远程地址
git push origin master
git tag '0.1.0' //添加标签,要与podspec中一致
git push --tags
验证podspec文件
pod spec lint
验证通过后,提交spec到本地repo,会自动更新到远程
pod repo push YJTestSpecs YJTestPod.podspec
完成之后就算创建成功了,在使用的时候要注意在Podfile文件中添加
source 'https://git.coding.net/zhangyjcoding/YJTestSpecs.git'
source [其他repo地址]
不添加source的话也可以这样
pod 'YJTestPod', :git => 'https://git.coding.net/zhangyjcoding/YJTestPod.git'
pod 'QueryKit' , :subspecs => ['Attribute','QuerySet']
pod 'QueryKit/Attribute'
组件间的通讯:
方案一:将宿主工程当作中间件,各模块暴露通讯需要的API
方案二:MGJRouter当作中间件,介于宿主工程和模块之间的层,通过url注册服务,其它地方通过url获取服务(可以github看怎么用,比较简单),但是要注意url的维护
方案三:target-action,每个文件提供一个统一披露的接口文件,额外维护一个中间件的分类扩展,其它地方通过target-action的方案进行交互,其实就是使用运行时,调用performSelector