天天看点

Objective-C 合成存取器方法

今天 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

大家可以注意到和之前代码的区别。我们没有包括下列设置函数方法和获取函数方法的定义: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

这样我们就可以很方便地让编译器去处理这个方法,它生成的存取器方法非常高效。