iOS项目的目录结构和开发流程

来源:互联网 发布:苹果怎么清楚软件数据 编辑:程序博客网 时间:2024/06/03 08:49

网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法。

目录结构

AppDelegateModelsMacroGeneralHelpersVendorsSectionsResources

一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化。

AppDelegate

这个目录下放的是AppDelegate.h(.m)文件,是整个应用的入口文件,所以单独拿出来。

Models

这个目录下放一些与数据相关的Model文件,里面大概是这样:

Models    |- BaseModel.h    |- BaseModel.m    |- CollectionModel.h    |- CollectionModel.m    ...

Macro

这个目录下放了整个应用会用到的宏定义,里面大概是这样:

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"

如果有新的类型的宏定义,可以再新建一个相关的Macro.h。

General

这个目录放会被重用的Views/Classes和Categories。里面大概是这样:

General    |- Views        |- TPKScollView        |- TPKPullToRefresh        ...    |- Classes        |- TPKBaseViewController        |- TPKHorizontalView        ...    | - Categories        |- UIViewController+Sizzle        |- UIImageView+Downloader        ...

这里的TPK是项目的首字母缩写。

Helpers

这个目录放一些助手类,文件名与功能挂钩。里面大概是这样:

Helpers    |- TPKShareHelper    |- TPDBHelper    |- TPKEmotionHelper    ...

助手类的主要作用是帮助Controller瘦身,也可以提供一定程度的复用。

Vendors

这个目录放第三方的类库/SDK,如UMeng、WeiboSDK、WeixinSDK等等。

Sections

这个目录下面的文件对应的是app的具体单元,如导航、瀑布流等等。里面大概是这样:

Sections    |- Menu    |- Setting    |- Collection    ...

Resources

这个目录下放的是app会用到的一些资源,主要是图片。

Cocoapods

业务无关的类库可以通过 Cocoapods 来方便地管理,如SDWebImageReachability等等。还有一些是多个应用都会用到的基础模块,比如HBAPI、HBSNS 、HBFoundation(HB为公司名首字母)等等,可以建一个私有的git repo,然后加到podfile中,这样如果HBAPI有更新,只需要pod update一下就行了。

顺便说一下HBFoundation,这个git仓库中可以放一些自己写的所有应用基本上都会用到的小模块。如很多app都会有隔一段时间跳出一个求好评的alertView,就可以写一个HBRating类,这样需要使用该功能的app只需加上一句:[HBRating checkIfShouldPopupWithAppID:(NSInteger)appID]就行了。又比如app都有接受push notification的需求,可以写一个HBAPNS类,等等。

开发流程

在拿到设计图后,就可以针对设计图抽离出可复用的Classes/Views/Helpers,考虑一下某个效果的具体实现,使用合适的设计模式来 避免大量的if/else嵌套,等等。不要一下子就钻到Sections中去实现页面效果和功能,初看起来可能会快一点,但只要有点复杂度的项目,这种做 法到后来只会吃尽苦头,代码会变的越来越难维护。所以前期一定要做好充足的准备工作。

 

转自:http://blog.leezhong.com/ios/2013/09/23/build-ios-application.html

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 健身俱乐部会员要退私教怎么办 感冒做剧烈运动怎么办 雪乐山滑雪怎么办卡 吉林省社保漏保怎么办 时时彩账户冻结怎么办 半夜到天津机场怎么办 小孩吃了避孕药怎么办 太阳能手表停了怎么办 太阳伞架坏了怎么办 通州自行车闪退怎么办? 台球厅生意不好怎么办 被水母咬了怎么办 被告不收判决书怎么办 律师完不成创收怎么办 保险业务员欺骗客户怎么办 德州扑克一样大怎么办 天气热没有空调怎么办 毕业证相片掉了怎么办 环世界肠道蠕虫怎么办 驾校时间过期了怎么办 过度劳累手疼怎么办 工商年检做错了怎么办 工商年检数字证书过期怎么办 工商年检过了怎么办 工商忘了年检怎么办 营业执照年检过期了怎么办 个体户营业执照没年检怎么办 工商执照没有年检怎么办 工商执照未年检怎么办 货车过期未年检怎么办 银吉姆健身卡怎么办 工大集团破产怎么办 哈尔滨摩托车棋牌证怎么办 喝鸽子汤回奶了怎么办 验车晚了一个月怎么办 太难找销路了怎么办 爆炒鸽子肉硬怎么办 哺乳期吃了鸽子怎么办 钻石戒指圈大了怎么办 鹌鹑蛋吃多了怎么办 鸽子在地上下蛋怎么办