第二章
2.2 解构Hello Object-C程序
.m扩展名,代表message,是OC的一个主要特性
编译器是LLVM,能处理C语言的全部3个变体(C/C++/OC)
2.2.1 #import语句
import代替了C语言的#ifdef的功能来包含另外一个文件。
Foundation框架的头文件占用了将近1M的磁盘空间。编辑器读取所有头文件的文本不会消耗很长时间,因为XCode使用预编译头文件(经过压缩的、摘要式的头文件)来加快速度。
预编译头:把头文件预先编译成中间格式,比如目标文件,以节约开发中编译器反复编译该头文件的开销。
例如,对于xxx.h,编译器预先将其处理为xxx.pch,以后再编译改程序时,编译器会对比pch和h文件的(最后改动的)时间戳,决定是否要重新编译。
例如使用Cocoa.h,里边包含其它三个头文件。OC建议使用该头文件,而不要包含三个单独的头文件(除非不需要三个中的一个或两个),因为编译器可以优先使用预编译的版本。
2.2.2 框架
框架代码路径/System/Library/Frameworks/
框架是一种把头文件、库、图片、声音等内容聚集在一个独立单元中的集合。APPLE将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集来提供。Cocoa的组成部分有Application Kit和Foundation,还有一套支持型框架,例如Core Animation,Core Image。
头文件:每个框架有一个主头文件,里边包含了框架内的所有头文件。
2.2.3 NSLog()和@字符串
NSLog(@“Hello OC! by %s”, “WuYongbo”);
NSLog在printf的基础上做了封装,有时间戳、自动添加换行符等。还可以使用printf的格式符等。
NS是NextSTEP的缩写,是兼容NextSTEP的标识,还表示这是Cocoa的命名办法。
“@”表示引号内的字符串应该作为Cocoa的的NSString元素来处理;NSString提供许多特性,例如:
提供字符串的长度;
字符串比较;
字符串和整形、浮点型的转化;等等。
2.3 布尔类型
BOOL跟C中的bool通用;Cocoa中只能使用BOOL;BOOL使用带符号的字符类型(signed char,8位存储空间)
如果BOOL变量被赋值为一个整数,转换为16进制后,末位的数字是0,就是NO,1就是YES。
格式说明符:%@
NSLog输出任意对象的值都会用它表示;对象会通过一个名为description的方法来提供自己的NSLog()格式(跟Java Object的toString()类似)
第三章
3.1 间接 indirection
3.4 中缀符 infix notation
@interface 和 @implementation 指令,分别告诉编译器类定义和类的实现