在objc中,可以自动生成设置函数方法和获取函数方法(统称为存取器方法)。

第一步是在接口部分中使用@property指令标识属性。这些属性通常是实例变量。在Fraction类中,两个实例变量numerator和denominator都属于此类属性。例如:

[objc]@interface Fraction:NSObject { int numerator; int denominator; } @property int numerator,denominator; -(void)print; -(double)convertToNum; @end [/objc]

注意,我们没有包括下列设置函数方法和获取函数方法的定义:numerator、denominator、setNumerator和setDenominator。我们要让objc-2.0编译器为我们自动生成或合成这些方法。如何完成呢?只需在实现部分中使用@synthesize指令即可,如下:

[objc] #import "Fraction.h" @implementation Fraction @synthesize numerator,denominator; -(void)print { NSLog(@"%i/%i",numerator,denominator); } -(double)convertToNum { if(denominator != 0) return (double)numerator/denominator; else return 1.0; } @end [/objc]

下面这行内容告诉objective-c编译器,为两个实例变量(numerator和denominator)的每一个生成一对设置函数方法和获取函数方法:

[objc]@synthesize numerator,denominator;[/objc]

通常,如果有称为X的实例变量,那么在实现部分包括以下行会导致编译器自动实现一个获取函数方法X和一个设置函数方法setX:

[objc]@synthesize x[/objc]

即使此处看起来并非什么大事,但是让编译器完成这项工作是值得的,因为生成的存取器方法是高效的,并且在使用多个核心的多台机器上,使用多线程时也可正常运行。