编写Objective-C程序时,要使用Foundation框架。
什么是框架?
框架(framework)是由很多类(class)组成的库,可以用来编写程序。?
对象(Object)
- 对象可以保存数据,还可以包含一组函数。
- 函数可以使用对象所包保存的数据。
- 向对象发送某个消息(message), 可以出发响应的函数。
- 这类由消息出发的函数称为方法(method)。
- OC是一门弱语法。
创建一个项目,Create a new Xcode project -> OS X 下得 Application -> Command Line Tool , 名称为 FirstOC, 如下图所示:
?
对于包含Object-C代码的文件,一般使用后缀 .m 。在Xcode 中找到main.m并打开,输入以下几行代码:
#import?int?main(int?argc,?const?char?*?argv[])?{ ????@autoreleasepool?{ ????? ????????NSLog(@"Hello,?World!"); ???????? ????????NSDate?*now?=?[NSDate?date]; ????????NSLog(@"The?date?is?%@"?,?now?); ????}???? ????return?0; }
在这段代码中,程序向NSDate类发送了date消息,NSDate类的date方法会创建一个NSDate实例,将其中初始化为当前日期时间,然后返回新对象的起始地址。
接着程序将得到的地址保存在 now 变量中,now变量是一个指向NSDate对象的指针。
构建并运行。输出结果大致如下:
2015-03-16?20:44:36.130?FirstOC[67855:3381337]?Hello,?World!2015-03-16?20:44:36.135?FirstOC[67855:3381337]?The?date?is?2015-03-16?12:44:36?+0000
NSLog()会先输出日期,时间,程序名称和进程ID ,然后输出实际内容, 具体的时间信息会不同。
NSLog()是Foundation提供的一个功能强大的输出函数,功能与printf()相似,它不仅可以输出字符串,还可以输出整数,C分格的字符串和Objective-C对象。
1)NSLog()的第一个参数是一个字符串常量,改字符串中用%格式的占位符,这个占位符会由对应的变量填充。
NSLog()函数支持的格式字符
格式字符 | 说明 |
%d | 以十进制形式输出整数 |
%o | 以八进制形式输出整数 |
%x | 以十六进制形式输出整数 |
%@ | 输出OC对象的"描述信息",输出NString字符串 |
%p | 输出对象的指针 |
%f | 输出浮点数 |
%s | 输出C语言的字符串 |
?
?
?
?
?
?
?
?
%@??????对象%d,%i??整数%u???????无符整形%f???????浮点/双字%x,%X?二进制整数%o??????八进制整数%p??????指针%e??????浮点/双字?(科学计算)%g??????浮点/双字%s??????C?字符串%c??????字符%C??????unichar%lld?????64位长整数(long?long)%llu?????无符64位长整数%Lf??????64位双字
?
2) NSLog()的格式化字符串必须必须加上前缀@, 它的输出会自动换行,无需再最后加上 \n 。
在Java编程中,使用System.out.println()方法来输出字符串,这就涉及用到一个static关键字。System是java.lang里面的一个类,而out是System里面的一个数据成员,但这个成员不是基本类,而是java.io.PrintStream类的对象。被关键字static修饰的数据成员或方法可以直接通过“类名.数据成员”或“类名.方法”来引用,而无须先建立对象。所以System.out是应用了out这个静态数据成员。而out又是一个java.io.PrintStream类的对象,所以out必然可以调用java.io.PrintStream类里面的方法,println()就是java.io.PrintStream类里的一个方法,它的作用就是用来想控制台输出信息的。
public?class?FirstHello{???public?static?void?main(String[]?args){ ?????????System.out.println("Hello?xpws?."): ????}???? }
?3)例子
?1??//常用类型的定义?2?int?i?=10;?3?BOOL?isShow=TRUE;?4?float?f?=?3.1415926;?5?char?a?=120;?6?NSString?*name?=@"Himi";?7?//常用打印语句?8?NSLog(@"字符串:%@",name);?9?NSLog(@"字符:%c",a);10?NSLog(@"布尔值:%i",isShow);11?NSLog(@"整形:%i",i);12?NSLog(@"单精度浮点数:?%f",f);13?NSLog(@"精度浮点数,且只保留两位小数:%.2f",f);14?NSLog(@"科学技术法:%e",f);15?NSLog(@"科学技术法(用最简短的方式):%g",f);16?NSLog(@"同时打印两个整数:i=%i,f=%f",i,f);
?4)数据类型说明
?
?
5)NSString与NSInteger的相互转换
1?NSInteger?integerNumber?=?888;2?NSString?*?string?=?[NSString?stringWithFormat:@"%d",integerNumber];3?NSLog(@"string?is?%@",?string);? 4?5?int?integer?=?[string?intValue];6?NSLog(@"integer?is%d",?integerNumber);
?
?
二 ID?当声明为指向对象的指针时,通常都会明确的写出相应对象的类,上例所示:
NSDate?*now?=?[NSDate?date];
? 但是在编程时,很可能碰到以下这种情况,声明指针时并不知道所指对象的准确类型,为此可以使用id类型。
id类型的含义是:指针,并可以指向任意类型的 Objective-C对象,以下是语法说明:
id?delegate?;
使用id例子声明日期的例子:
id?now?=?[NSDate?date]?; NSLog(@"Today?is?%@"?,?now);
注意:以上这泽变量声明中没有使用星号,id已经隐含了星号的作用。
?