美文网首页good
iOS架构-搭建可用的App框架

iOS架构-搭建可用的App框架

作者: CoderLGL | 来源:发表于2020-03-19 11:42 被阅读0次

    前言:
    框架是一个APP的骨骼,核心,一个项目的所有功能以及以后的迭代都是在此基础上进行的,它是开展一个项目的至关重要的一步。如果这一步做的不好,会导致结构散乱、阅读性和扩展性差,影响开发效率甚至导致代码重构。

    APP主要做哪些事情?

    • 调用网络API
    • 页面展示
    • 数据的本地持久化
    • 动态部署方案
    • 收集用户数据,给产品和运营提供参考
    • 合理地组织各业务方开发的业务模块,以及相关基础模块
    • 每日app的自动打包,提供给QA工程师的测试工具

    架构原则:易读性、易维护性、易扩展性。
    常见的分层架构:视图层、业务层、网络层、数据层。

    所谓好架构:

    • 有严格的代码规范,结构目录清晰,功能模块分类明确
    • 注释统一明确,有一致规范
    • 避免复杂的依赖关系,确保代码的高封装性和高复用性,减少冗余代码
    • 没有横向依赖,尽可能少的跨层访问
    • 对业务方该限制的地方有限制,该灵活的地方要给业务方创造灵活实现的条件
    • 易测试,易拓展
    • 接口少,接口参数少
    • 低内存,高性能
    • 提高模块化程度,增加组件粒度

    一、项目目录结构

    确保目录中每一项都为实体文件夹,而非创建的是Group。

    项目目录结构

    一般包含这么几项(文件夹):

    1. 应用入口(AppDelegate)
    2. 功能模块(Modules)
    3. 管理模块(Manager)
    4. 工具类(Utils)
    5. 基类(Base)
    6. 分类(Category)
    7. 宏定义、头文件(Define)
    8. 第三方库(ThridParty)
    9. 资源文件(Resource)
    10. 支持文件(Supporting Files)
    11. Pods(管理第三方库):可对第三方库进行二次封装供顶层使用,当第三方库的接口发生改变的时候,我们只需要改我们所封装中的接口就可以了。

    1. 应用入口(AppDelegate)

    应用入口

    AppDelegate是应用的代理,应用级的事件都委托它处理,包含启动退出、推送等事件,以及IM、支付等第三方的回调,这使得AppDelegate内代码庞大,错综复杂,十分不利于阅读和维护,因此可以新增了一个AppDelegate+AppService类别,用来处理生命周期之外的业务,AppDelegate作为事件入口,具体实现直接调用类别里的方法,只为更清晰。

    2. 功能模块(Modules)

    Modules包含了应用内的功能模块,一般根据底部Tab栏划分并关联实体文件夹(默认是虚拟的要手动建立实体文件夹拖进来),每个模块内使用的是MVC模式,一般包含Model、View、Controller这三个文件夹,根据需求也可以增加Resource和Service文件夹,Service封装数据请求,VC里调用拿数据即可,至于Resource为什么在这,我认为当功能模块层级较多时,每个大功能模块都对应许多资源,对应到模块内用起来方便,当然也可以放到最外层的Resource文件夹里,建立对应的模块名称,在这儿我是选择把公共的放到最外层Resource里,功能相关的放到模块里的Resource文件夹内,只为更清晰。

    3. 管理模块(Manager)

    管理模块

    Manager的定义是全局基础服务,通常使用类方法或者单例来实现,主要包含对应用、用户的管理和服务,例如网络状态监听,广告页应用介绍页等;用户快速登录退出操作以及登录状态的获取等。

    4. 工具类(Utils)

    工具类

    Utils文件夹内主要包含全局通用工具,来源于对三方框架的二次封装,或是自己写的工具类。在这个项目里,我封装了带AES加密网络请求工具,全局Toast提示,广告页等。

    5. 基类(Base)

    基类

    Base文件夹用来存放项目的基类,基类作用包含一些定制化的内容,例如页面样式,空数据页面等,使用基类来实现,可以统一控制,利于维护,减少冗余

    6. 分类(Category)

    分类

    对系统类、自定义类增加的类别都放在这里。

    7. 宏定义、头文件(Define)

    宏定义、头文件

    全局宏顾名思义是定义了一些全局通用宏、枚举。
    一般是这几种:工具宏定义(UtilsMacros):比如获取屏幕宽高,系统版本,颜色赋值,数据类型验证等;
    接口宏定义(URLMacros):定义服务器接口地址以及环境开关;
    枚举(Enumerate):全局的枚举

    8. 第三方库(ThridParty)

    第三方文件夹放一些第三方的类库和对第三方封装,比如第三方登录、支付、IM等。

    9. 资源文件(Resource)

    主要是各种文件,json、xml、dat、图片,视频,声音等。

    10. 支持文件(Supporting Files)

    支持文件

    主要放 PCH,Assets.xcassets,LaunchScreen.storyboard,Info.plist,main.m等系统文件

    11. CocoaPods(管理第三方库)

    CocoaPods是iOS项目的依赖管理工具,开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方开源库的时间。

    参考Casa大神:Casa架构设计

    相关文章

      网友评论

        本文标题:iOS架构-搭建可用的App框架

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