iOS项目架构文档
设计的项目架构主要引用MVVM+MVC架构,并以功能模块分级。以下为目录结构。
初级目录:
我们只需要关注SGZH文件夹下的目录,其他为Xcode管理的目录。可以看到此目录为项目初级目录,我们开发过程只需对初级目录内的文件进行操作,其主要划分为3大块:
AppDelegate: AppDelegate是程序入口,程序启动和显示逻辑都定义在内部,主要可以让开发人员快速找到代理文件并了解程序从启动到显示过程,也可以快速进行一些初始化测试。
Resource: 此目录主要存放一些项目资源文件,如项目切图、音频、视频、coreData数据等。
Class: 存放我们编写的代码文件。
SupportingFile: 项目配置文件。
Info.plist、main.m、pch文件。
二级目录:
Resource目录下: 相对较小的切图放在Assets内部,并以功能模块划分文件夹。如果较大的图,如启动页,引导页,可以在该目录下新建对应的功能模块文件夹存放。其他音频视频文件可以建立对应名字的文件夹存放。
Class目录下:
Category: 项目分类文件。
Macro: 项目全局头文件、全局宏和常量
Other: 其他一些配置文件,如网络请求API
Main: 项目主要文件,全局共用文件以及一些基类
Tool: 项目工具类,如网络请求工具,缓存工具,app管理工具等 Vendor: 存放项目需要手动引入的第三方库。
Sections: 项目功能模块分组。
可按底部tabbar对应选项卡划分,若有登录、新特性等比较大的功能,也可划分为一个模块。 若果模块内的子模块功能比较多,也可在其内部划分一个子模块。 每个模块内部都分4个文件夹,分别存放对应的Controller、Model、View、ViewModel。 据我了解,大部分企业iOS项目都会选取类似这种架构模式。个人觉得此架构较为清晰,可读性好,并且每个模块文件夹相对独立,开发人员相对专注开发自己的模块。
以上为本人从事iOS开发以来总结的一些项目架构经验,如有不足或者可改进之处可提出修改。
iOS项目架构文档的更多相关文章
- 3g自己主动更新网卡驱动web完架构文档
几年前写. 看它是否是用得上 1 简单介绍 本文档具体描写叙述了基于ASP.NET平台和IIS服务的T-Mobile自己主动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描写叙 ...
- nginx-tomcat-memcached架构文档说明(转)
800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 st1\:*{be ...
- [转]OpenContrail 体系架构文档
OpenContrail 体系架构文档 英文原文:http://opencontrail.org/opencontrail-architecture-documentation/ 翻译者:@KkBLu ...
- xml和xsd架构文档相关知识
1.使用架构(XSD)验证XML文件 2.使用自动生成工具: 工具目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4. ...
- xxxx征集系统项目目标文档
分组:每四人一组 主题:xxx征集系统 成果: 讨论结束后,每组提交一份课堂讨论记录(电子版发表到博客上,纸质版小组成员签名,下节课提交). 每人根据课堂讨论结果提交一份系统利益相关者描述案例.撰写项 ...
- XXX系统项目目标文档课堂讨论
XXXX重大技术征集系统 1.讨论结果: 2.项目目标文档 A目标: 1. 实现普通用户在线需求填报,个人信息管理,需求结果查看. 2. 实现审核员用户的需求审核,需求查看浏览和生成图表结果. 3. ...
- xxx征集系统项目目标文档
分组:每四人一组 主题:xxx征集系统 成果: 讨论结束后,每组提交一份课堂讨论记录(电子版发表到博客上,纸质版小组成员签名,下节课提交). 每人根据课堂讨论结果提交一份系统利益相关者描述案例.撰写项 ...
- kettle开源项目部署文档
kettle开源项目部署文档 1.kettle简介 kettle是一款国外开源的ETL(Extract Transform Load)工具,纯java编写,可以在Windows.Linux.Unix上 ...
- Jenkins构建项目帮助文档
Jenkins构建项目帮助文档 主要步骤 一.配置jdk 1.1. 下载jdk,安装到自己电脑磁盘的Java目录下(比如:D:\Java\jdk). 1.2. Jdk环境变量的配置: 1. 鼠 ...
随机推荐
- css制作小三角
视觉稿中经常有些小三角,如下图.每次用图片做太不方便了,我们看看用css实现的效果(支持ie6,7哦) <style> /*border实现三角*/ /*箭头向上*/ .arrow-top ...
- ArcGIS Server JavaScript API 各命名空间的含义【转】
1.esri 命名空间 所有的对象都是在 esri 命名空间下的,esri 有自己的属性和方法. 如 esri.version 返回当前 JavaScript API 的版本号.e ...
- Linux操作系统搭建LAMP开发环境
Step1. 安装 Apache 在terminal中输入命令 sudo apt-get install apache2 打开浏览器,在地址栏输入:127.0.0.1,如果出现了 “It works! ...
- elfiner-servlet 2.x已开源!
通过近一周的努力,elfiner-servlet 2.x基本搞定! 已提交github,开源之!请各位享用~~ 对elfinder不熟悉的请访问:http://elfinder.org 一个很不错的文 ...
- 在List中找出最大值的两种方法
先说需求:找出一个对象List中,某个属性值最大的对象. 1.定义对象 private class A { public int ID { get; set; } public string Name ...
- 针对wordpress的二次开发
0.基础nginx\mysql\php\html\css\js 1. 搭建环境mac + nginx + mysql + wordpresshttp://segmentfault.com/a/1190 ...
- 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值
Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...
- JAVA spring 常用包作用
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 关于MySQL中使用LOAD DATA INFILE导入csv文件时的日期格式问题
在使用MySQL时,常常会用到Load Data Infile来导入数据,在遇到Date类型的列时,有时会遇到格式转换的问题: 首先创建一张简单的people表,包含名字,生日,年龄三个字段: mys ...
- primefaces 带参数的组件
分析了一下primefaces extension showcase的源码,总结一下组件传参的方式. 下面定义了一个组件,名为fourTabsDecoratorCustom.xhtml 1: < ...