Xcode - 项目目录结构的搭建
目录结构
1 - 一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责且容易应对新的变化
- AppDelegate
- Models
- Sections
- Macro
- General
- Helpers
- Vendor
- Resources
目录内容
1 - AppDelegate:这个目录下放的是 AppDelegate 文件,是整个应用的入口文件,一般单独拿出来
2 - Models:这个目录下放一些与数据相关的 Model 文件
- BaseModel.h
- BaseModel.m
- CollectionModel.h
- CollectionModel.m
- ...
3 - Macro:这个目录下放了整个应用会用到的宏定义
- AppMacro.h
- NotificationMacro.h
- VendorMacro.h
- UtilsMacro.h
- ...
① AppMacro.h 里放 App 相关的宏定义
// 表情相关
#define EMOTION_CACHE_PATH @"cachedemotions"
#define EMOTION_RECENT_USED @"recentusedemotions"
#define EMOTION_CATEGORIES @"categoryemotions"
#define EMOTION_TOPICS @"emotiontopics"
// 收藏相关
#define COLLECT_CACHE_PATH @"collected"
// 配图相关
#define WATERFALL_ITEM_HEIGHT_MAX 300
#define WATERFALL_ITEM_WIDTH 146
② NotificationMacro.h 里放的是通知相关的宏定义
③ UtilsMacro.h 里放的是一些方便使用的宏定义
#define UIColorFromRGB(r,g,b) [UIColor colorWithRed:r/255.0 ,green:g/255.0 ,blue:b/255.0 ,alpha:1]
#define NSStringFromInt(intValue) [NSString stringWithFormat:@"%d",intValue]
④ VendorMacro.h 里放一些第三方常量
#define UMENG_KEY @"xxxxx"
#define UMENG_CHANNEL_ID @"xxx"
4 - General:这个目录放会被重用的 Views、Classes 和 Categories
- Views
TPKScollView
TPKPullToRefresh
- Classes
TPKBaseViewController
TPKHorizontalView
- Categories
UIViewController+Sizzle
UIImageView+Downloader
说明:这里的 TPK 是项目的首字母缩写
5 - Helpers:这个目录放一些助手类,文件名与功能挂钩
- TPKShareHelper
- TPDBHelper
- TPKEmotionHelper
- ...
6 - Vendors:这个目录放第三方的类库或 SDK,如 UMeng、WeiboSDK、WeixinSDK 等等
7 - Sections:这个目录下面的文件对应的是 app 的具体模块,每个模块又分为 Model、View 和 Controller
- Business
Models
Views
Controllers
- Settings
Models
Views
Controllers
- User
Models
Views
Controllers
- Coupon
Models
Views
Controllers
8 - Resources:这个目录下放的是 App 会用到的一些资源、图片、plist 文件、css 文件等。针对于不同的类型建立单独的文件夹存放
- Images 存放项目中用到的图片
AppIcon 存放应用图标图片
FirstLaunch 存放程序第一次加载图片
Nav 存放导航条上的图片
- Default 存放程序默认加载的图片
- Plist 存放项目中用到的 plist 文件
- Videos 存放项目中用到的视频文件
- Musices 存放项目中用到的音频文件
- Others 存放其他的文件,比如 css、js 等
小结
1 - 在拿到设计图后就可以针对设计图抽离出可复用的 Classes、Views、Helpers,考虑一下某个效果的具体实现,使用合适的设计模式来避免大量的 if/else 嵌套
2 - 不要一下子就钻到 Sections 中去实现页面效果和功能,初看起来可能会快一点,但只要有点复杂度的项目,这种做法到后来只会吃尽苦头,代码会变的越来越难维护
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)