7.1 分离接口和实现文件
通常,类的声明(@interface部分)要放在它自己的名为class.h的文件中,而类的定义(@implementation部分)通常放在相同名称的文件中,但扩展名要使用.m。通过在.m中导入.h文件,使编译器知道为当前类声明的类和方法,同时还能确保这两个文件的一致性。
需要注意,导入的文件要用一对引号“”引起来,而不是<>。双引号适用于本地文件,而不是系统文件。这样编译器就知道在哪里能够找到指定的文件。
7.2 合成存取方法
从Objective-C 2.0开始,可自动生成设值方法和取值方法(统称为存取方法)。第一步是在接口文件中使用@property指令标识属性;第二步,在实现部分使用@synthesize指令即可。
如果使用了@property指令,就不需要在实现部分声明相应的实例变量。
其实并不需要使用@synthesize指令,使用@property就够了。编译器会自动为你生成setter和getter方法。但是,注意,如果你不适用@synthesize,那么编译器生成的实例变量会以下划线(_)字符作为其名称的第一个字符。
7.3 使用点运算符访问属性
一般格式如下:
instance.property instance.property = value; //对属性赋值
7.4 具有多个参数的方法
通过列出每个连续的参数并用冒号将其连接起来,就可以定义一个接收多个参数的方法。用冒号连接的方法将成为这个方法名的一部分。
-(void) setTo: (int) n over: (int) d;
7.5 局部变量
局部变量是基本的C数据类型,没有默认的初始值,所以在使用之前要先赋值。
方法的参数名也是局部变量。执行方法时,通过方法传递的任何参数都被复制到局部变量中。因为方法使用参数的副本,所以不能改变通过方法传递的原值。
static关键字:在变量声明前加上static关键字,可以使局部变量保留多次调用一个方法所得的值。
static int hitCount = 0;
声明整数hitCount是一个静态变量。和其他基本数据类型的局部变量不同,静态变量的初始值为0,所以前面显示的初始化是多余的。此外,它们只在程序开始执行时初始化一次,并且在多次调用方法时保存这些数值。
1 -(int) showPage 2 { 3 static int pageCount = 0; 4 ... 5 ++pageCount; 6 ... 7 return pageCount; 8 }
pageCount可用于记录该方法的调用次数。
只能在定义静态变量和局部变量的方法中访问这些变量。