美文网首页
iOS简单又直接的傻瓜式组件化设计

iOS简单又直接的傻瓜式组件化设计

作者: 梨花树下好乘凉 | 来源:发表于2021-06-29 19:35 被阅读0次

    先上代码
    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
    1. 接口层,为A模块定义协议,OC语言已经给我们设计好了,就叫protocol。
    2. A模块,按协议实现,定义一个类,遵守这个协议就好了。
    3. 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

    相关文章

      网友评论

          本文标题:iOS简单又直接的傻瓜式组件化设计

          本文链接:https://www.haomeiwen.com/subject/temkultx.html