iOS 应用架构

作者: 我叫王可可 | 来源:发表于2018-11-15 11:25 被阅读0次

    搭建项目的目录
    项目目录
    ├── ThirdLib(三方库)
    │ ├── SDWebImage
    │ └── AFNetworking
    ├── Framework(自己封装的类库)
    ├── General(通用类目录)
    │ ├── Class(通用的类,比如自定义父类)
    │ └── Helper(通用辅助方法)
    ├── Main(程序单一入口,仅放AppDelegate区分其他文件)
    │ ├── AppDelegate.h
    │ └── AppDelegate.m
    ├── Model(数据模型类目录)
    │ ├── Macro(宏定义目录)
    │ ├── BLL(业务逻辑层目录)
    │ ├── DAL(数据访问层目录)
    │ ├── Entity(自定义实体目录)
    │ ├── Request(网络请求类目录)
    │ ├── Location(定位服务类目录)
    │ └── Socket(Socket类目录)
    ├── Module(功能模块目录)
    │ │
    │ ├─── ModuleA
    │ │ ├── ViewControllerA.h(视图控制器头文件)
    │ │ └── ViewControllerA.m(视图控制器m文件)
    │ ├── ModuleB
    │ ├── ModuleC
    │ ├── ModuleD
    │ └── ModuleE
    └── View(视图类目录)
    └── MyTestView

    一个不好的view层架构,主要原因有以下5种:

    1. 代码混乱不规范
    2. 过多继承导致的复杂依赖关系
    3. 模块化程度不够高,组件粒度不够细
    4. 横向依赖
    5. 架构设计失去传承

    ViewController的代码结构

    1. 定义property属性
    2. #pragma mark - life cycle(viewDidload, viewWillAppear ...)
    3. *#pragma mark - UITableViewDelegate *
      methods...
    4. #pragma mark - CustomDelegate
      methods...
    5. #pragma mark - event response
    6. #pragma mark - private methods
    7. #pragma mark - getters and setters

    要点如下:

    1.所有属性使用getter和setter
    勘误1:viewDidLoad只做addSubview的事情,然后在viewWillAppear里面做布局的事情,最后在viewDidAppear里面做Notification监听之类的事情.属性的初始化,就交给getter去做;
    2.getter和setter全部放在最后面;
    3.每一个delegate都把对应的protocol名字带上,delegate方法不要到处乱写,写到一块区域里面去;
    4.event response专门开一个代码区域
    所有的button,gestureRecognizer的响应事件都放在这个区域里面,不要到处乱放
    5.关于private methods,正常情况下viewConroller里面不应该写,这个private methods一般是用于日期换算、图片裁剪啥的这种小功能。这种小功能要么把它写成一个category,要么做成一个模块,哪怕这个模块只有一个函数也行.

    关于View的布局

    写view的时候,用frame或者autolayout,如果没有精心设计过,布局一定惨不忍睹!
    直接使用CGRectMake的话可读性很差,光看几个数字也无法知道,view与view之间的位置关系.用autolayout可读性稍微还好,但生成constrain的代码是在太长,代码观感不太好.
    autolayout这边可以考虑使用Masonry,代码的可读性就能好很多.如果还有使用Frame的,可以考虑使用这个框架HandyAutoLayout

    何时使用StoryBoard,何时使用nib,何时使用纯代码写view

    提倡用code去画view而不是storyboard

    相关文章

      网友评论

        本文标题:iOS 应用架构

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