一.今天是朱可夫将军学习IOS开发的第一天,先来介绍一下什么是IOS,ios是由苹果公司开发的手持设备操作系统,它占据了现今智能手机的半壁江山,是手机应用开发者的不二之选。话不多说,直奔主题:
1.IOS开发使用的工具是Xcode,现选用Xcode6.3;
2.在IOS的众多框架中,其中有两个最为常用的框架:Foundation框架和Cocoa框架;
2.1Foundation框架简介:在OSX下的Mac操作系统中,为所有程序开发奠定基础的框架称为Foundation框架。在Foundation框架中包括了大量的可供使用的类、方法和函数。在Mac OSX上,大约有125个可用的头文件。作为一种简便的形式,我们可以使用如下的代码头文件。
#import <Foundation/Foundation.h>
因为Foundation.h文件实际上导入了其他所有Foundation头文件,所以不必担心是否导入了正确的头文件,Xcode会自动将这个头文件插入到程序中。
2.2Cocoa框架简介:在Mac OSX操作系统中,术语Cocoa是指Foundation框架和Application kit框架。术语Cocoa Touch是指Foundation框架和UIKit框架。其中Application kit框架用于提供与窗口、按钮、列表等相关的类。Cocoa框架用于Mac OSX桌面与笔记本电脑的应用程序开发,而Cocoa Touch框架用于iphone与iTouch的应用程序开发。Cocoa与Cocoa Touch都有Foundation框架。然而在Cocoa Touch下,UIKit代替了AppKit框架,以便为很多相同类型的对象提供支持,比如窗口、视图、按钮、文本域等。另外,Cocoa Touch还提供使用加速器的类和触摸式界面,并且去掉了不需要的类,比如打印支持。
二.Objective-C语言基础
1.IOS选择Objective-C作为开发语言,有许多方面的原因,具体来说有以下四点:
<1>面向对象:objective-c语言是一门面向对象的语言,功能十分强大。
<2>融合性好:从严格意义上讲,objective-c语言是C语言的一个超集。当前使用的C程序无需重新开发就可以使用Cocoa软件框架,并且开发者可以在objective-c中使用C的所有特性。
<3>简单易用:objective-c是一种简洁的语言,他的语法简单,易于学习。
<4>objective-c和其他的基于标准C语言的面向对象语言相比,对动态的机制支持更彻底。
2.一个简单的例子:这段简单程序能够在屏幕上显示短语“first Programming!”。
整个代码十分简单,下面是程序代码:
#import <Foundation/Foundation.h>
int main(int argc,const char* argv[])
{
NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];
NSLog(@“first Programming!”);
[pool drain];
return 0;
}
注:在objective-c中,小写字母和大写字母是有区别的。
<1>#import指令的功能是告诉编译器找到并处理名为Foundation.h的文件,这是一个系统文件,表示这个文件不是我们创建的。
<2>在objective-c语言中,编译器指令以@符号开始,这个符号经常使用在类和对象的情况。
<3>在函数main中的最后一条语句是:
return 0;
上述语句的功能是终止main的运行,并且返回状态0。在objective-C程序中规定,0表示程序正常结束。任何非零值通常表示程序出现了一些问题,例如无法找到程序所需文件。
3.另一个程序:
#import <Foundation/Foundation.h>
int main(int argc,const char* argv[])
{
NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];
int sum;
sum=10+20;
NSLog(@“The sum of 10 and 20 is %i”,sum);
[pool drain];
return 0;
}
<1>在这个程序中,字母i被NSLog例程识别,它表示将要显示的是一个整数。
<2>int类型:NSLog中“%i”,都将自动显示一个整数;
NSLog中“%o”,都将在终端上用八进制显示整型值;
NSLog中“%x”,用十六进制格式显示一个值。
<3>float类型:可以存储小数位的值。要显示浮点值,可以用“%f”。
<4>double类型:objective-c规定,当在float变量中所提供的值域不能满足要求时,需要使用double变量来实现需求。声明为double类型的变量可以存储的位数大概是float变量的两倍多。
<5>char类型:在NSLog调用中,可以使用格式字符%c来显示char变量的值。Objective-c中的字符串不是“abc”,而是@“abc”。
例子:
#import <Foundation/Foundation.h>
int main(int argc,const char* argv[])
{
NSAutoreleasePool * pool=[[NSAutoreleasePool alloc] init];
int integerVar=50;
float floatingVar=331.79;
double doubleVar=8.44e+11;
char charVar=’W’;
NSLog(@”floatingVar=%f”,floatingVar);
NSLog(@”integerVar=%i”,integerVar);
NSLog(@”doubleVar=%e”,doubleVar);
NSLog(@”doubleVar=%g”,doubleVar);
NSLog(@”charVar=%c”,charVar);
[pool drain];
return 0;
}
输出:integerVar=50;
floatingVar=331.790009;
doubleVar=8.440000e+11;
doubleVar=8.44e+11;
charVar=’W’;
<6>id类型:id数据类型可以存储任何类型的对象。
<7>在objective-c程序中的限定词有:long,longlong,short,unsigined及signed。
如果直接把限定词long放在int之前,那么所声明的整型变量在某些计算机上具有扩展的值域。
格式符号%li用十进制格式显示long int的值,符号%lo用八进制格式显示值,而符号%lx用十六进制显示值。
在objective-c程序中,限定词signed能够明确的告诉编译器特定变量是有符号的。signed主要用在char声明之前。