今天 Mike 要聊的是 Objective-C 2.0 下一个很方便的功能:自动生成设置函数方法和获取函数方法 (统称为存取器方法)。
第一步是在接口部分中实用 @property 指令标识属性。这些属性通常是实例变量。在前文 《Objective-C 分离接口和实现文件》 中的 Fraction 类,两个实例变量 numerator 和 denominator 都属于此类属性。下面是新的接口部分,其中添加了新的 @property 指令。
01 @interface Fraction: NSObject
02 {
03 int numerator;
04 int denominator;
05 }
06
07 @property int numerator, denominator;
08
09 -(void) print;
10 -(double) convertToNum;
11
12 @end
02
03
04
05
06
07
08
09
10
11
12
大家可以注意到和之前代码的区别。我们没有包括下列设置函数方法和获取函数方法的定义:numerator,denominator,setNumerator: 和 setDenominator:。我们要让 Objective-C 2.0 编译器为我们自动生成或合成这些方法。如何完成呢?只需在实现部分中使用 @synthesize 指令即可,如下所示:
01 #import "Fraction.h"
02
03 @implementation Fraction
04
05 @synthesize numerator, denominator;
06
07 -(void) print
08 {
09 NSLog (@"%i/%i", numerator, denominator);
10 }
11
12 -(double) convertToNum
13 {
14 if (denominator != 0)
15 return (double) numerator / denominator;
16 else
17 return 1.0;
18 }
19
20 @end
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
这样我们就可以很方便地让编译器去处理这个方法,它生成的存取器方法非常高效。