先上代码
https://gitee.com/pkgogai/gydfoundation_public/tree/master/GYDModuleInterface
Code目录是代码,Demo目录是举例,Tests还没准备。
https://gitee.com/pkgogai/gydfoundation_public/tree/master/Help/模板
文件模板
前言
东西多了就要分类,代码也一样,多了就要分文件,分目录,分模块,分项目。这里就简单设计一下如何划分模块并可独立运行。至于可独立运行的好处就不用多说了。
关键点:实现简单,能独立运行。
接口代码结构
代码可以划分文件,并且每个文件独立编译。
假如A和B是不同的文件,B文件中也要调用A文件中的代码,则可如下图所示,A.m文件和B.m文件互相没有引用关系,可以独立编译成.o。双方又可通过A.h约定的方法进行交互。
16248721935462.jpg
换成模块,简单的沿用这个结构。
依然假设A、B模块互相独立,但是B模块用到了A模块的功能。
16248756710613.jpg
- 接口层,为A模块定义协议,OC语言已经给我们设计好了,就叫protocol。
- A模块,按协议实现,定义一个类,遵守这个协议就好了。
- B模块,按协议调用。这里总得有个用来调用协议的对象,那就约定好类名,利用OC的运行时创建吧。
于是全部的代码是这样的
-
接口层
.h文件
16249681718486.jpg
.m文件
16249681775289.jpg -
A模块
16248863019215.jpg -
B模块
16248863649169.jpg
用宏定义简写一下,完整版本的样子
16249387448630.jpg再准备好文件模板,一次创建好4个文件(1对放在接口层,1对放在业务模块中)。这样为一个模块创建接口时只需关注2处:在接口层的XXXInterface.h中定义协议,在业务模块的XXXInterfaceDelegate.m中实现协议。
16249711054035.jpg
项目结构
配置文件
xcode项目有一个用来记录所有源文件目录结构的配置文件,那么模块分分合合,这个文件要随之变化,为了简单,这里用pod工具来管理。每个模块的源文件和资源文件放在一个目录,每个目录内创建一个podspec文件,作为一个pod库,项目的空工程放在一个单独的目录里,建立Podfile文件引用这些pod库。作为一个iOS开发者,如果不知道pod或者其它可以替代pod的工具,那么建议先自学一下。
仓库
这里使用git,不知道的话,建议先自学一下。如果公司内有多个部门的话,每个部门至少应该有1个仓库,部门内多个模块,可以分不同的仓库,也可以共用一个仓库以减少管理成本。
如果开发人数够多,可以像制作第三方库一样制作真正的独立模块库,通过pod远程引用。但我们为了简单,所有代码都放在本地进行引用。参考本文源代码。
git仓库间的关系,可以用子模块或子树,不知道的建议先自学一下。我选用了子模块,相对来说出现问题更容易解决。
我的个人仓库,结构是这样的:
16249539501825.jpg
网友评论