IOS项目目录结构

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

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

目录结构

AppDelegate
Models
Macro
General
Helpers
Vendors
Sections
Resources

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

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中去实现页面效果和功能,初看起来可能会快一点,但只要有点复杂度的项目,这种做法到后来只会吃尽苦头,代码会变的越来越难维护。所以前期一定要做好充足的准备工作。

经验有限,如果你有更好的想法,欢迎交流:)

--EOF--

时间: 2024-08-09 22:03:11

IOS项目目录结构的相关文章

MVVM 模式下iOS项目目录结构详细说明

?更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么?下面,我们将结合代码,说明 MVVM 设计模式以及项目目录结构. 一.MVVM 模式介绍  MVVM 是 Model-View-View Model 的缩写,MVVM 听起来好像很复杂的样子,但它本质上就是MVC 的改进版.MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和

iOS 项目目录结构

iOS 项目的目录结构能看出你的开发经验 最近有师弟面试iOS开发,他很吃惊地跟我说,面试官竟然问他怎么分目录结构的,还具体问每个子目录的文件名. 目录结构确实非常重要,面试官这么问他,无疑是想窥探他的开发经验.清晰的目录结构,可让人一眼明白相应的业务和职能,这也能体现开发者的经验和架构水平. 目前,我接触过的项目中,比较常规的两种结构:1.主目录按照业务分类,内目录按照模块分类(主目录按照MVC架构分类,内部根据项目模块分类) 优点:相对比较快定位对应的业务.缺点:模块相关类太过分散,需要来回

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

来源:http://mobile.51cto.com/hot-431205.htm 网上关于iOS项目的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法.一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 网上关于iOS项目的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己

【ios开发学习 - 第二课】iOS项目目录结构

目录结构 AppDelegate Models Macro General Helpers Vendors Sections Resources 一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大概了解目录的职责,且容易应对新的变化. AppDelegate 这个目录下放的是AppDelegate.h(.m)文件,是整个应用的入口文件,所以单独拿出来. Models 这个目录下放一些与数据相关的Model文件,里面大概是这样: Models |- BaseModel.h |- BaseMo

iOS开发总结——项目目录结构

1.前言 清晰的项目目录结构有利于项目的开发,同时也是软件架构的一部分,所以,项目开发之初搭建项目的目录结构很重要.刚转iOS时,自己并不知道如何搭建App的项目目录,在参与开发两个应用后,结合Web开发的目录习惯我整理了自己的目录结构.分享一下,欢迎交流. 2.我的项目目录结构 项目目录 ├── ThirdLib(三方库) │ ├── SDWebImage │ └── AFNetworking ├── Framework(自己封装的类库) ├── General(通用类目录) │ ├── Cl

百度Baidu EFE team的前端规范——项目目录结构规范

项目目录结构规范 简介 该文档主要的设计目标是项目开发的目录结构保持一致,使容易理解并方便构建与管理. 编撰 李玉北.erik.黄后锦.王杨.张立理.赵雷.陈新乐.刘恺华. 本文档由商业运营体系前端技术组审校发布. 要求 在本文档中,使用的关键字会以中文+括号包含的关键字英文表示:必须(MUST).关键字"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT"

xcode的ios工程目录结构复习

目录结构: a.supporting files: main.m和资源文件 xxx-info.plist:包含应用程序相关属性列表,如版本,程序名等 .pch文件:预编译头文件,相当于MFC里的stdafx.h,默认已经包含了常用的头文件 .strings文件:国际化字符串资源 图片等其他资源 b.frameworks: 程序需要的外部库文件,默认已经包含常用的库,如UIKit,Foundation等库 c.products: 生成执行文件所在目录 d.xib文件:视图文件,提供给interfa

Laravel项目目录结构说明

Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app.php |- autoload.php |- config 应用程序的配置文件. |- database 数据库迁移与数据填充文件. |- public 项目web入口和静态资源文件 (图片.js.css,字体等等). |-index.php 入口 |- resources 目录包含视图.原始的资

基于Maven管理的JavaWeb项目目录结构参考

通常在创建JavaWeb项目时多多少少都会遵循一些既定的比较通用的目录结构,下面分享一张基于Maven管理的JavaWeb项目目录结构参考图: 上图仅是参考,不同项目不同团队都有自己的约定和规范. 个人体会: 项目目录结构一旦约定和规范之后,每个团队成员自我约束和遵守规范才是整个目录结构不随项目的进展而变得越来越不清晰的根本.