第02章 Objective-C程序设计
2.1 对象和消息
2.1.1 消息表达式
消息表达式(message expression):如
id obj;
[obj msg];//消息表达式,obj为消息接收者。
消息是由消息关键字(message keyword)组成的,消息关键字的命名规则同变量名的命名规则一样。同函数调用一样,消息中也可以带有参数。没有参数的消息只有消息名。
消息关键字的末尾有”:”时,表示这个消息带有参数。
发送带有多个参数的消息的时候,可以通过多个“关键字:变量”的写法完成调用。另外,也可以省略关键字而只是通过“:”将变量连接起来,如:
- (void)testFun:(NSString*)str1 :(NSString*)str2
{
NSLog(@"%@%@",str1,str2);
}
[self testFun:@"one" :@"two"];
2.1.2 消息选择器
函数是通过函数名来区分的,消息则是通过消息名来区分的。消息名又称为消息选择器(message selector)、选择器(selector)或方法(method)。
2.1.3 实例变量的生成和初始化
实例的生成:
[类名 alloc]
alloc执行后即可完成对象所需要的存储空间的分配,但还没有对对象进行初始化。初始化对象用的方法叫做初始化方法(initializer)。不同的类会提供不同的初始化方法,同一个类也可能提供多个初始化方法。
2.2 类的定义
2.2.1 类的接口声明
Objective-C中接口(interface)和实现(implementation)是分离开的。
类接口的声明以编译指令@interface开始并以@end结束,所有的Objective-C编译指令(compiler directive)都是以@字符开头。
BOOL是Objective-C的布尔类型,它的值为真值常量YES(非0)和假值常量NO(0)。Objective-C的BOOL并不是一个基本类型,他是无符号char的一个typedef(别名)。
2.2.2 类的实现
类的实现部分以编译指令@implementation开始,以@end结束。
方法内部可以自由使用类的实例变量。
2.3 编译
2.3.1 简单的编译方法
Objective-C是使用C语言编译器clang来编译代码的。