分享一下iOS项目目录分级结构
2016-06-21 10:52
375 查看
通过iOS项目架构都是以MVC为主,今天,我要分享的项目架构主要引用MVVM+MVC,并展示一下目录该怎么分级。
初级目录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/15534e5e1de53ada042df02bea4d800f.png)
我们只需要关注SGZH文件夹下的目录,其他为Xcode管理的目录。可以看到此目录为项目初级目录,我们开发过程只需对初级目录内的文件进行操作,其主要划分为3大块:
1.AppDelegate: AppDelegate是程序入口,程序启动和显示逻辑都定义在内部,主要可以让开发人员快速找到代理文件并了解程序从启动到显示过程,也可以快速进行一些初始化测试。
2.Resource: 此目录主要存放一些项目资源文件,如项目切图、音频、视频、coreData数据等。
3.Class: 存放我们编写的代码文件。
4.SupportingFile: 项目配置文件。Info.plist、main.m、pch文件。
二级目录:
Resource目录下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/644e1a847f71c1170ac743f919006b67.png)
相对较小的切图放在Assets内部,并以功能模块划分文件夹。如果较大的图,如启动页,引导页,可以在该目录下新建对应的功能模块文件夹存放。其他音频视频文件可以建立对应名字的文件夹存放。
Class目录下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/143bd2aa855c206bd7d87ba5fc958e2a.png)
Category: 项目分类文件。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/4879af5fdc1a59de7e086930b186f9f9.png)
Macro: 项目全局头文件、全局宏和常量
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/3442c06d3192d405f5d67b8c951242e8.png)
Other: 其他一些配置文件,如网络请求API
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/4ac564ddb07c0fc0bda14cf3ac680be1.png)
Main: 项目主要文件,全局共用文件以及一些基类
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/c6ded14998a90e559b834e4165b8625a.png)
Tool: 项目工具类,如网络请求工具,缓存工具,app管理工具等
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/dcac7d91e0e189397f2caf7dd173b7d8.png)
Vendor: 存放项目需要手动引入的第三方库。
Sections: 项目功能模块分组
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/a60eaa00c3bc78041e5d7b65c949efde.png)
section里的模块可按底部tabbar对应选项卡划分,若有登录、新特性等比较大的功能,也可划分为一个模块。 若果模块内的子模块功能比较多,也可在其内部划分一个子模块。 每个模块内部都分4个文件夹,分别存放对应的Controller、Model、View、ViewModel。 据我了解,大部分企业iOS项目都会选取类似这种架构模式。个人觉得此架构较为清晰,可读性好,并且每个模块文件夹相对独立,开发人员相对专注开发自己的模块。
以上为本人从事iOS开发以来总结的一些项目架构经验,如有不足或者可改进之处可提出修改。
初级目录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/15534e5e1de53ada042df02bea4d800f.png)
我们只需要关注SGZH文件夹下的目录,其他为Xcode管理的目录。可以看到此目录为项目初级目录,我们开发过程只需对初级目录内的文件进行操作,其主要划分为3大块:
1.AppDelegate: AppDelegate是程序入口,程序启动和显示逻辑都定义在内部,主要可以让开发人员快速找到代理文件并了解程序从启动到显示过程,也可以快速进行一些初始化测试。
2.Resource: 此目录主要存放一些项目资源文件,如项目切图、音频、视频、coreData数据等。
3.Class: 存放我们编写的代码文件。
4.SupportingFile: 项目配置文件。Info.plist、main.m、pch文件。
二级目录:
Resource目录下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/644e1a847f71c1170ac743f919006b67.png)
相对较小的切图放在Assets内部,并以功能模块划分文件夹。如果较大的图,如启动页,引导页,可以在该目录下新建对应的功能模块文件夹存放。其他音频视频文件可以建立对应名字的文件夹存放。
Class目录下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/143bd2aa855c206bd7d87ba5fc958e2a.png)
Category: 项目分类文件。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/4879af5fdc1a59de7e086930b186f9f9.png)
Macro: 项目全局头文件、全局宏和常量
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/3442c06d3192d405f5d67b8c951242e8.png)
Other: 其他一些配置文件,如网络请求API
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/4ac564ddb07c0fc0bda14cf3ac680be1.png)
Main: 项目主要文件,全局共用文件以及一些基类
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/c6ded14998a90e559b834e4165b8625a.png)
Tool: 项目工具类,如网络请求工具,缓存工具,app管理工具等
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/dcac7d91e0e189397f2caf7dd173b7d8.png)
Vendor: 存放项目需要手动引入的第三方库。
Sections: 项目功能模块分组
![](https://oscdn.geek-share.com/Uploads/Images/Content/201606/a60eaa00c3bc78041e5d7b65c949efde.png)
section里的模块可按底部tabbar对应选项卡划分,若有登录、新特性等比较大的功能,也可划分为一个模块。 若果模块内的子模块功能比较多,也可在其内部划分一个子模块。 每个模块内部都分4个文件夹,分别存放对应的Controller、Model、View、ViewModel。 据我了解,大部分企业iOS项目都会选取类似这种架构模式。个人觉得此架构较为清晰,可读性好,并且每个模块文件夹相对独立,开发人员相对专注开发自己的模块。
以上为本人从事iOS开发以来总结的一些项目架构经验,如有不足或者可改进之处可提出修改。
相关文章推荐
- 利用pod trunk发布程序
- [iOS]怎么在iOS开发中切换显示语言实现国际化
- iostat的深入理解
- IOS音频和视频(Audio & Video)
- iOS NSDate 使用
- IOS categoty,成员变量,属性实现的总结
- iOS之加载HTML中的特殊字符
- iOS 开发 百度地图
- iOS备忘录之常用的第三方开源库
- IOS的后台任务
- iOS 支持 IPv6
- iOS-socket
- iOS中,如何在github上上传自己的项目
- iOS中集成ijkplayer视频直播框架
- iOS 时间与日期处理
- iOS中气泡对话框拉伸效果视图的实现
- iOS 判断是否是数字
- iOS 判断是否连接wifi
- iOS 判断身份证号码
- iOS 根据生日(单位秒)转换成一个年龄