IOS开发流程说明书.docx
- 文档编号:25574911
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:26
- 大小:911.82KB
IOS开发流程说明书.docx
《IOS开发流程说明书.docx》由会员分享,可在线阅读,更多相关《IOS开发流程说明书.docx(26页珍藏版)》请在冰豆网上搜索。
IOS开发流程说明书
IOS
开发流程说明书
版本:
V0.2
文档修订记录
版本编号或者更改记录编号
*变化
状态
简要说明(变更内容和变更范围)
日期
变更人
审批日期
审批人
V0.1
A
创建
2014/2/11
高明月
V0.2
M
添加创建项目流程和基础代码说明
2014/2/14
高明月
*变化状态:
A——增加,M——修改,D——删除,N——正式发布
文档审阅信息
序号
审阅人
角色
审阅日期
签字
备注
目录
1序言6
1.1编写目的6
1.2术语定义6
1.3参考资料6
2关于IOS6
2.1IOS介绍6
2.2IOS开发环境简述7
3创建项目9
3.1新建iOS项目9
3.2应用程序目录结构说明12
3.3应用程序初始结构概览14
3.4IOS应用程序的生命周期15
4代码入门(数据类型)16
4.1基础数据类型17
4.2OC数据类型17
4.2.1NSNumber类和NSInterger17
4.2.2NSString类型19
4.2.3NSArray类型19
4.2.4NSDictionary类型20
4.2.5NSDate类型20
5OC类的认识(成员变量和方法)20
5.1类的声明21
5.2方法的定义24
6运行和调试24
6.1IOS模拟器25
6.1.1选择设备25
6.1.2模拟器自定义设置26
6.1.3存储屏幕快照27
6.2程序调试28
6.3NSLog29
1序言
1.1编写目的
本说明书为IOS开发流程说明书,制定本说明书的目的是针对IOS开发技术进行宏观表述。
以便后续的设计、开发、测试、验收等工作顺利进行。
适用对象:
IOS开发人员
项目管理人员
产品开发人员
1.2术语定义
(1)真机
真机即所谓的iPhone手机或者ipad,是指具有IOS这个操作系统的手机,由苹果公司进行研制并销售,用户可以从appstroe上下载相关应用及游戏。
(2)IOSSDK
IOS专属的软件开发工具包。
(3)Xcode
IOS开发工具。
1.3参考资料
暂无。
2关于IOS
2.1IOS介绍
苹果IOS是由苹果公司开发的移动操作系统。
苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPodtouch、iPad以及AppleTV等产品上。
IOS与苹果的MacOSX操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。
原本这个系统名为iPhoneOS,直到2010WWDC大会上宣布改名为IOS。
最新版本为IOS7.0。
更多的资料可以到苹果开发网站上获取:
本文主要对以下几个方面对IOS的开发入门进行引导说明。
如图2-1所示。
图2-1IOS开发入门说明的内容导航图
2.2IOS开发环境简述
最友好,最现实,也是最方便的开发环境就是在Mac系统中安装Xcode进行开发。
原因在于:
第一,开发工具(Xcode)限制。
苹果官方只提供Mac版的Xcode,而Xcode内置了XcodeIDE,性能分析工具,iOSSDK,iOS模拟器和最新的OSX,可以方便迅速的进行代码编辑以及应用调试,可谓是Mac和iOS开发工具的不二选择。
第二,代码提示和自动补全。
iOS开发中用到的类或方法的名称,为了更具语义化,让开发者一目了然,通常会比较长,这往往会让刚刚接触iOS开发的开发者为了记住这些方法而伤透脑筋。
而Xcode拥有优于其他编辑器的OC代码提示和自动补全功能,这将很大程度降低开发入门的门槛,这决定你开发iOS应用没有理由不使用Xcode。
因此,使用非苹果电脑的开发者们最好安装MacOSX的虚拟机,进行开发学习,否则你不仅会比别人花上多出一倍甚至更多的时间去搭建开发环境,而且代码编写上也会比使用Xcode开发的人花上更多的精力。
目前MacOSX系统的最高版本是10.9.1,如下图所示,Xcode版本可以安装到最高版本5.0.2.如果是在windows安装的虚拟机,发布的懒人版本最高应该是10.8.2。
Xcode版本5与4是不能向下兼容的,主要是UI开发机制的修改,如果系统版本不统一建议,Xcode版本安装至4.6.1.暂时可以支持到iOS6.0SDK的版本开发,如果要很对iOS7版本开发,建议Xcode都更新到5以上。
图2-1OSX系统版本显示图
3创建项目
3.1新建iOS项目
打开Xcode,如果是首次打开Xcode,你将会看到一个欢迎界面,如图:
图3-1Xcode欢迎界面
你可以直接在该界面中点击图3-1中1处标记的CreateanewXcodeproject来创建一个项目,也可以点击图中2处标记的按钮来打开电脑中已经存在的Xcode项目。
你还可以修改3处标记的复选框状态设置下次启动Xcode是否显示该欢迎界面。
本文不演示在此点击1处所示创建项目,首先点击该界面左上角的红色按钮退出该欢迎界面,然后点击屏幕左上角的File->New->Project。
截图如下:
图3-2Xcode菜单界面
接下来你将看到如下界面:
图3-3Xcode创建项目界面
首先进行系统筛选,iOS应用则选择iOS列表对应项,OSX应用则选择OSX列表对应项。
本例为iOS应用,故在此选择iOS中的Application(图中左上角红框所示),然后选择应用模板选择,在界面右边列出了多种最常用的应用模板类型,开发者按照自己的应用需求可自行选择,本例选择SingleViewApplication(图中右上角红框所示)。
一般项目开发如果是自己定制的界面开发,建议选择EmptyApplication。
做完以上选择后点击窗口右下角Next按钮,进入下一个设置窗口:
图3-4Xcode项目信息界面
此处内容会根据个人情况而不同,故不做赘述,按照窗口提示,填写相关信息即可。
注意窗口下方的三个复选框,其功能分别是使用storyboards、使用自动引用计数器、包含单元测试,根据个人情况勾选/取消即可。
建议选择storyboards和UseARC模式,关于ARC模式在以后的章节中会做重点介绍。
设置完成后点击右下角Next按钮,进入下一个窗口:
图3-5Xcode项目文件存储界面
按照窗口所示,选择项目存储位置后点击窗口右下角Create按钮,完成应用创建过程。
3.2应用程序目录结构说明
项目创建完成之后,Xcode会进入项目开发界面,界面大致分为三部分,左侧项目及目录结构列表、中间为代码编辑区、右侧属性设置和控件列表等区域。
下面是目录结构的截图:
图3-6Xcode项目目录界面
项目初始时包含如图所示三个主要目录,后续开发中开发者可以自行添加目录。
其中:
∙FirstIosApp目录与项目名称同名,主要存放应用相关源代码和配置文件;
∙Framework存放项目使用到的框架,默认会添加图示三个必备框架;
∙Products用于存放生成的应用文件,开发中开发者一般不必关心。
项目目录建议建立统一的说明文档,根据文档属性归类相同文件。
下图3-7显示某一个完整项目的目录。
其中view文件夹内都是界面元素文件,parse是接口解析文件,images是图片文件,model是数据模型文件,dao是数据库操作文件,util是工具类文件,viewcontroller是界面文件。
文件目录实行统一化管理,方便文件的归类和查找,易于团队开发。
图3-7Xcode项目目录实例界面
3.3应用程序初始结构概览
整个应用程序的入口文件默认为AppDelegate.m,应该可以通过配置文件修改(未尝试)。
其内部结构如下图3-8所示。
该文件包含应用程序生命周期中各个阶段可以调用的方法接口,以便应用程序在不同的状态阶段能进行相应的操作。
这些方法就不一一说明了,开发者几乎可以望名知意。
主要应用的方法就是didFinishLaunchingWithOptions,是程序启动后加载界面和初始化的方法。
图3-8AppDelegate.m代码图
3.4IOS应用程序的生命周期
对于上面图示方法如果还有不解的地方,可以参考下图3-9所示(来源于网络):
图3-9IOS应用生命周期流程图
4代码入门(数据类型)
做iOS开发,仅仅懂得使用Xcode,仅仅了解目录结构,仅仅了解生命周期,是远远不够的,这些只是基础中的基础。
一定的编程能力也是必不可少的。
下面就简单的介绍一下iOS开发的编程语言——Objective-C,后面简称OC。
学习一门语言,往往需要从最基础的数据类型开始,至于编程逻辑,技巧等则是在开发过程中慢慢积累的。
下面对基础的数据类型和OC的数据类型详细说明一下。
4.1基础数据类型
OC是C语言的一个超类,因此OC拥有C或C++的几乎所有特性,当然它也有自己独具一格的地方。
所以OC也支持C语言的数据类型,诸如int,float等也都可以在OC中使用。
基础数据类型可以参考一些C语言相关介绍,这里不多做介绍。
4.2OC数据类型
OC不是仅仅只能使用C/C++的数据类型,它也拥有自己的数据类型,虽然与通常人们熟知的各种数据类型看起来不太一样,但事实上OC的数据类型是与基础数据类型相近,也不难理解。
下面列举几个常见的OC数据类型。
4.2.1NSNumber类和NSInterger
NSNumber是以对象的形式来包装基础数据类型,它提供以下方法,以下会对OC的方法定义进行介绍:
+(NSNumber*)numberWithChar:
(char)value;
+(NSNumber*)numberWithInt:
(int)value;
+(NSNumber*)numberWithFloat:
(float)value;
+(NSNumber*)numberWithBool:
(BOOL)value;
例如,要从一个int数据初始化一个NSNumber可以这样写:
NSNumber*number=[NSNumbernumberWithInt:
100];
而要从NSNumber实例得到NSInteger数据则可以如下操作:
NSIntegerinteger=[numberintValue];
如果下载了SDK可以在数据类型上点击command按键,查看所有方法的定义。
如下图所示。
图4-1对OC基础类点击command按键显示图
图4-2对OC基础类定义显示图
4.2.2NSString类型
NSString是OC的字符串类。
与普通字符串不同的是NSString的值需要在普通字符串前加上一个@符号。
例如要初始化一个'I'mastring.'的OC字符串,我们需要这样做:
NSString*str=[NSStringstringWithString:
@"I'mastring."];
OC也提供简写形式:
NSString*str=@"I'mastring.";
NSString类还提供了很多其他形式的创建字符串的方法(比如:
stringWithFormat等),这里就不一一列举了,可以在基类中查看。
4.2.3NSArray类型
NSArray是OC的数组类。
OC的数组是很强大的,在一个数组中可以允许存在不同类型的数据,这个特性就跟强大的JavaScrit一样。
初始化一个数组可以这样操作:
NSArray*arr=[NSArrayarrayWithObjects:
@"a",@"b",@1,nil];
当然也支持简化形式:
NSArray*arr=@[@"a",@"b",@1];
需要说明一点,使用arrayWithObjects方法创建数组的时候最后需要以nil结尾,而使用简化方式的时候不需要。
开发中可以使用以下两种形式获取数组对应索引位置(index)的值:
NSString*a=arr[index];
NSString*b=[arrobjectAtIndex:
index];
这里对NSMutableArray类型说明一下,很多基础类型都提供了类似的两种类型,主要区别是,NSArray类型是不变长数组,定义后是不能修改长度;NSMutableArray是可变长度数组,可以动态改变数组内元素长度和内容。
4.2.4NSDictionary类型
NSDictionary是OC的字典类。
字典类型在使用中以key-value键值对的形式存在。
也支持多种初始化方式,下面列举两种:
NSDictionary*dic=[NSDictionarydictionaryWithObjects:
@[@"a",@"b",@"c"]forKeys:
@[@"first",@"second",@"third"]];
NSDictionary*dic=@{@"first":
@"a",@"second":
@"b",@"third":
@"c"};
取值方法跟NSArray大同小异,也提供NSMutableDictionary类型:
NSString*a=[dicobjectForKey:
@"first"];
NSString*b=dic[@"second"];
4.2.5NSDate类型
NSDate是OC的日期类。
常见用法举例:
NSDate*date=[NSDatedate];//返回当前时间
NSDate*date=[[NSDatealloc]init];//初始化为当前时间,类似date
5OC类的认识(成员变量和方法)
iOS开发常常伴随着视图,而视图往往离不开视图控制器,在iOS开发中每一个视图控制器就是一个OC的类,因此学习iOS开发就必须了解OC的类。
OC的类使用@interfaceClassName:
superClass
与java相比OC的@interface关键字就等同于JAVA的class关键字,OC的protocol就是JAVA中的interface,学习时需要特别注意。
下图展示的是一个类的定义。
图5-1定义类代码图
5.1类的声明
举例声明一个Person的类(视图控制器)并实现它,拥有name、age两个成员变量,自然需要定义getName和setName、getAge和setAge,下面我们看下这个过程。
首先,类的结构如下:
@interfacePerson:
NSObject{
NSString*name;
intage;
}
end
然后,我们声明它的setter和getter方法,用来设置和读取它的成员变量的值。
按照传统方式应该如下定义:
@interfacePerson:
NSObject{
NSString*name;
intage;}
-(void)setName:
(NSString*)newName;
-(NSString*)getName;
-(void)setAge:
(int)newAge;
-(int)getAge;
end
OC还提供了更简单的代码方式:
@interfacePerson:
NSObject{
NSString*name;
intage;}
@property(nonatomic,strong)NSString*name;
@property(nonatomic,assign)intage;
end
它的功能和上面的代码是一样的。
补充一下,@property本身可以接受参数来指定变量的getter和setter方式,其参数可用值和具体功能如下:
nonatomic//声明变量只在单线程中工作
atomic//默认值,可能有多个线程会用到这个变量
copy//分配一个新的空间,把原地址的内容复制过来
assign//简单的传递指针
retain//传递指针后引用计数器(retainCount)会自加1
strong//强引用
weak//弱引用
声明就这样就完成了,下面我们看下它的具体实现,在OC中类的实现需要使用另外一个关键字@implementation,格式如下:
@implementationPerson
end
我们还是先看下传统方式声明getter和setter方法该如何实现:
@implementationPerson
-(void)setName:
(NSString*)newName{
self.name=newName;}
-(NSString*)getName{
returnself.name;}
-(void)setAge:
(int)newAge{
self.age=newAge;}
-(int)getAge{
returnself.age;}
end
OC提供的更简单的代码编码格式:
@implementationPerson
@synthesizename;
@synthesizeage;
//或者直接下面一句
//@synthesizename,age;
end
在新版的Xcode中,@synthesize是可以省略的,但是建议还是都写上。
5.2方法的定义
下面对方法的如何定义进行说明,如图是一个方法的声明。
图5-2方法声明代码图
其中(BOOL)是该方法返回的数据类型,如果不需要返回则定义为(void),如果有返回数据,方法中需要return关键字返回匹配的数据类型。
contains:
…toFind:
…{}是方法名称的定义,这是自定义方法的名称。
…是传入的参数,方法的定义如同一句话的说明。
这个方法可以这么理解,此函数是包含方法,在temp字符串中要找到search字符串,如果找到返回Yes,如果没有找到返回No。
(NSString*)temp和(NSString*)search是参数,括号里面的是参数的数据类型,temp和search是参数名称。
关于方法前面的+和-符号需要解释一下。
首先我们需要说明一下,一个类可以拥有成员变量和方法,而方法可以包含类方法和实例方法。
所谓类方法是可以使用类名直接调用的方法,而实例方法是需要该类的实例才可以调用的方法。
而在OC中使用“+”表示该方法为类方法,而“-”很简单自然是表示实例方法了。
至于方法的声明和实现大致和传统方式声明getter和setter是一样的,这部分就不再重复了。
6运行和调试
每一个应用的开发过程都是漫长的,而在这个过程中我们免不了需要不时的运行一下程序,看看当前的效果,检查一下代码是否存在异常或者错误。
6.1IOS模拟器
6.1.1选择设备
Xcode的强大在于内置了很多开发和调试的工具,在Xcode中内置了iOS模拟器,能够模拟几乎所有iOS真机的功能,因此开发者可以通过iOS模拟器测试正在开发中的应用程序,提高开发效率,减少错误,节省开发时间。
在运行前选择与应用对应的模拟设备是必须的,否则可能导致运行结果出现意外的问题。
在Xcode的菜单栏下方提供了选择模拟器的地方,建议下载5.0版本的iPhone模拟器,一般程序需要兼容IOS5.0版本。
如图所示:
图6-1选择模拟器运行
选择好模拟器后点击左侧的Run按钮,就可以在指定的模拟器中启动应用了。
第一次启动模拟器一般会比较慢,后面就好了。
同样可以点击Run旁边的Stop按钮,停止模拟器中的当前应用。
也许有些时候你想独立运行iOS模拟器,而不启动当前应用,这也是可以的,请看下图:
图6-2启动模拟器选项
也许相同的设备,但是却又多个尺寸,多个屏幕分辨率,例如:
iPhone就有4、4S、5等。
有模拟器可以对尺寸选择:
图6-3选择模拟器尺寸选项
6.1.2模拟器自定义设置
现在很多流行的iOS应用都有定位功能,那么在模拟器怎么测试定位呢?
如下图所示:
图6-4模拟器自定义位置
6.1.3存储屏幕快照
开发应用程序通常都不是一步到位的,过程中可能会产生各种各样稀奇古怪的现象,也许是显示不正常,也许是出现意外的效果,也或者你想把你当前的显示效果分享给开发团队的其他成员,这个时候作为开发者,你也许想要记录出现的这些现象,比如:
截图、录屏什么的。
这些都是不错的方法,但是iOS模拟器拥有更加方便的方式,如图所示:
图6-5模拟器存储屏幕快照
模拟器还有很多其他功能,在以后的开发应用中将会逐渐补充。
6.2程序调试
每一个开发者都不能保证他的程序是完美的,所以通常在我们运行程序的时候会出现很多奇怪的警告或者错误,有的可以一目了然,迎刃而解,有的却隐藏得很深,很难发现。
这时候断点调试就直观重要了。
在代码编辑器的左边的行号区,鼠标在这个区域单击可以在对应行上添加/关闭(不是删除)断点。
启动断点,当再次运行程序的时候,程序若执行到当前行,则会暂停在当前行上,开发者可以在控制台看到断点处记录的信息。
大致如图:
图6-6控制台信息
如图所示,在断点处我们可以在控制台看到变量date的当前值以及内存地址等信息,这样就可以通过这些信息判断程序运行到该处时是否正常,也可以这样查看一些其他信息。
程序调试有很多技巧,Xcode也提供很强大的调试工具,断点调试是最直观的,其他的调试技巧会逐渐补充。
6.3NSLog
有些时候我们可能会遇到一些仅靠断点无法解决的问题,这时我们还可以借助NSLog进行调试。
NSLog也用于在控制台输出信息。
NSLog类似Java中的systemout功能,可以让我们获取更多信息。
如图:
图6-7控制台log信息输出
通过以上的内容的介绍,我们可以基本使用Xcode进行iOS应用的开发,之后会补充iOS中的基本控件介绍和在项目开发中会遇见的问题和解决方案。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IOS 开发 流程 说明书