iOS新建项目文件管理规范

当我们进入到新的公司的第一天,看到以前老员工编写的代码,找个东西累死人咧,那个抓耳挠腮的啊,一般情况下都有想揍人的赶脚。 哈哈,不忙,先想一下自己的代码!想一下自己写的代码怎么才能新来的人一眼就能看懂,想找什么,在几秒之内就能找到?这个就要在前期创建项目的时候留神 了, 要保证项目的易读性、易维护性以及易扩展性等。

在我看来,作为一个项目开发的领头人,你可以从两个方面着手:

  • 项目的架构
  • 代码的规范

今 天就先介绍我在做新项目的时候项目架构(代码规范我会在下一篇文章以总结的形式罗列出来),搞理论这个我不擅长,只好整个例子说一说。考虑到很多人在刚学 OC的时候都用“新浪微博”来练手,所以这里就拿新浪微博的iPhone客户端来说事,也正好对比一下,这样更能看出问题所在。(其实,目前市场上基本所 有的应用都适用,本文说的就是一个思想,不论平台,不论语言,只要能理解,就可以应用到实际的应用开发中。)

为了为项目代码创建一个易读性、易维护性、易扩展性都相当不错的代码模板,现在要求项目代码的搭建者按照如下的步骤进行:

1、所有新建项目最好是「Single View Application」:

2、填好各个项目,这里注意,项目名称最好使用英文:

3、项目创建好之后,第一件事就是修改最低部署系统的Target版本:

4、接下来就是源文件管理,我们看左侧的导航区域:

  • 非代码源文件全部移动到「Supporting Files」中;
  • 选 中Appdelegate和ViewController的.h和.m,右键「Show In Finder」,然后把Appdelegate和ViewController的.h和.m移到废纸篓,回到Xcode,删除红色的刚才我们删除的文件 (也可以直接在Xcode中右键->delete->movetotrash, 但是有时候会删除地不干净)。

5、 导入我们已经准备好的项目结构文件(就是项目结构的文件夹和文件的集合在这下载查看)到与项目名称相同的目录之下,如图:

结果是这样的:

6、 其中文件夹`QLClasses`中是该项目中的所有源代码,`QLResources`中存放的是所有的非代码资源文件,下面就这两个文件夹的结构就新浪微博目前的结构进行详细的说明。整体的框架图如下(这才是重点):

  • 需 要注意的是图片的处理,在`QLResources`中有个`QLImages`文件夹,这个文件夹是供特殊的图片文件而设立的,你不能把所有的图片都塞 到这里,这个不科学。最好还是放在Assets.xcassets中,那么到底是哪些图片呢?在有些项目中,大量使用了全屏的背景图片,这样的图片我们一 定不能使用[UIImage imageNamed:@"imageName"]的方式加载,因为这个方法会把图片直接缓存到内存中,试想一下,如果很多张图片都塞进内存是什么情况? 那就只能使用[UIImage imageWithContentsOfFile:@"imagePath"]的方式,但是我们知道Assets.xcassets中的图片在生成ipa 后会被打包成一个压缩文件,以减少内存的占用,这个`imagePath`从哪里来呢,所以问题就解决了。把这些图片放到这个文件夹下面,加载的时候直接 用NSBundle解决path的问题,ok!
  • 项目中肯定会遇到多个界面使用同一个数据模型的问题,最好还是在`QLMain`文件夹中创建两个文件夹`QLCommonModel`和`QLCommonView`两个文件夹,以便统一管理。
  • 在Xcode左侧导航中看到的结构中的每一个文件夹(除却Supporting Files),必须映射到Finder中的文件夹中,这样在不打开项目的情况下,我们就可以迅速的定位出以前写过的工具类的位置,也方便在Finder中查看当前项目的结构。
时间: 2024-10-09 10:27:11

iOS新建项目文件管理规范的相关文章

iOS新建项目规范

注:这是本人对多年来iOS开发中项目结构一点自己的见解也是为公司内部制定的iOS项目创建模板结构;文中引入了sina的iOS-iPhone的客户端的界面架构,但是本人并非sina的工作人员,只是根据自己的理解划分了项目结构,欢迎提出不同观点,[email protected],欢迎转载,转载时请保留文章的所有内容,谢谢. 本篇文章回不定时更新... 项目结构GitHub地址:https://github.com/Shreker/QLProjectDemo.git 为了为项目代码创建一个可读性.维

iOS端项目注释规范附统一代码块

代码的注释经常被人忽略,以至于在后期维护的时候较为困难.我们准备在XX项目开始之前制定一套规范的注释体系,致力于达到就算维护人员改变也能快速上手的效果. 1.属性注释 属性注释 使用 /** 注释*/ 的文档注释格式. 这种注释相较于// 注释的优点是此属性可以在后面的引用时,在智能提示的下方显示中文注释 如果你不是在董铂然博客园看到本文请点击查看原文. 例如: /** 回复率*/ @property(nonatomic,strong)MTPoiCompareM *replyRate; /**

iOS新建项目基本配置

项目整体同xib+代码的方式 1.调整项目文件结构 2.将资源图片导入工程 General->LaunchScreen 修改 3.App名称修改 info->Bundle name 4.删除StoryBoard 并修改 General->Main Interface删除 5.为App创建窗口 AppDelegate.h - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDic

iOS开发项目-02添加子控制器以及项目分层

iOS开发项目-02添加子控制器以及项目分层 一.添加子控制器 1.设置根控制器(自定义) 说明:分析新浪微博应用,观察其整体建构层次.而系统的控制器不能满足项目开发的需求,这里把项目中原有的控制器删除. 自己定义一个TabBarViewController类.让这个类作为window窗口的根控制器. YYAppDelegate.m文件代码: 1 #import "YYAppDelegate.h" 2 #import "YYTabBarViewController.h&quo

iOS开发项目篇—54"设置"界面的搭建

iOS开发项目篇—54"设置"界面的搭建 一.实现 新建一个设置控制器,当点击“我”控制器导航栏“设置”按钮时,即跳转到该界面 1.在“我”控制器中对导航栏“设置按钮”的处理 1 // 2 // YYProfileViewController.m 3 // 4 5 #import "YYProfileViewController.h" 6 #import "YYCommonGroup.h" 7 #import "YYCommonItem

iOS开发项目篇—36封装微博业务

iOS开发项目篇—36封装微博业务 一.简单说明 1.请求参数面向模型 2.请求结果面向模型 3.对控制器来说应该屏蔽业务细节.不让控制器关心(知道)业务细节,它只需要知道自己在做某个业务 @通过一个专门的业务处理类:处理微博业务细节 说明: 业务:加载新的微博首页数据 实现:给新浪服务器发送一个GET请求 业务:加载更多的首页微博数据 实现1:给新浪服务器发送一个GET请求 实现2:去沙盒中加载以前离线缓存的微博数据  二.实现 1.新建一个微博业务处理类,继承自NSObject 微博业务处理

iOS开发项目篇—27自定义UITabBar

iOS开发项目篇—27自定义UITabBar 一.自定义 思路: (1)新建一个继承自UITabBar的类,自定义一个UITabBar (2)用自定义的UITabBar换掉系统的UItabBar(使用了KVC) (3)监听控制器的切换,只要控制器一切换,就调用代理方法强制重新布局子控件(内部会调用layoutSubviews). YYTabBar.m文件代码: 1 // 2 // YYTabBar.m 3 // 4 5 #import "YYTabBar.h" 6 7 @interfa

iOS开发项目篇—08新版本特性·SrollView

iOS开发项目篇—08新版本特性 一.简单说明 展示新版本的特性:第一次使用一些应用软件时,展示这个版本的软件的新特性,一般在第一次启动程序的时候显示. 1.什么情况下显示版本新特性: (1)第一次使用某个软件时(X) (2)第一次使用某个版本时,显示版本新特性(V) 2.怎么知道这个软件的版本呢? 在plist文件里,bundle version中显示版本号. 3.如何显示版本新特性? 应该在YYAppDelegate.m中进行判断: 如果是第一次使用这个版本,那么就显示版本新特性(设置为wi

iOS开发项目篇—21抽取工具类

iOS开发项目篇—21抽取工具类 一.抽取宏 把和应用相关的信息抽取出来 App Key:1972915028 App Secret:b255603c4dfd82b4785bf9a808ce2662 回调地址:http://www.cnblogs.com/wendingding/ (1)appkey和回调页面在很多地方都要用到 (2)如果是不同应用的话,只需要把这几个参数换掉就可以了.把它们抽取成一个宏,写到pch文件中. 项目的PCH文件 1 #import <Availability.h>