3.5 @implementation部分
与注释的一样,@implementation部分包含声明在@interface部分的方法的实际代码。就像术语指出的那样,在@interface部分声明方法并在@implementation部分定义它们(就是说,给出实际的代码)。
@implementation部分的一般格式如下:
@implementation NewClassName
methodDefinitions;
@end
NewClassName表示的名称与@interface部分的类名相同。可以在父类的名称之后使用冒号,如同在@interface部分使用的冒号一样:
@implementation Fraction:NSObject
然而,它是可选的而且通常并不这么做。
@implementation部分中的methodDefinitions部分包含在@interface部分指定的每个方法的代码。与@interface部分类似,每种方法的定义首先指定方法(类或者实例)的类型、返回类型、参数及其类型。然而,我们并没有使用分号来结束该行,而是将之后的方法代码放入一对花括号中。
以下是代码清单3-2的@implementation部分:
//——@implementation section——
@implementation Fraction
-(void)print
{
NSLog(@“i/%i”,numerator, denominator);
}
-(void)setNumerator:(int)n
{
numerator=n;
}
-(void)setDenominator:(int)d
{
denominator=d;
}
@end
print方法使用NSLog显示实例变量numerator和denominator的值。但是这个方法引用numerator还是denominator呢?它引用的实例变量包含在作为消息接收者的对象中。这是一个重要的概念,我们稍后再回来介绍。
setNumerator:方法具有一个名为n的整型参数,并简单地存储到实例变量numerator中。类似地,setdenominator:将其参数d的值存储到实例变量denominator中。