-4

这些方法在一个名为 Rectangle 的类中,这是实现文件 Rectangle.m 的一部分

#import "XYPoint.h"

- (void)setOrigin:(XYPoint *)pt {
    origin = pt;
}

- (XYPoint *)origin {
    return origin;
}
4

1 回答 1

3

对 Objective-C 来说并没有什么特别之处。它只是一个名为 的属性的 setter 和 getter origin

当您使用任一设置新原点时

self.origin = /*some new value*/;

或者

[self setOrigin: /*some new value*/];

第一个方法将被调用。

以同样的方式,当您使用self.originor获取值时调用另一个方法[self origin](但对于第二种方法)


命名约定

您通常称这些方法为“setter 和 getter”或简称为“accessors”。在其他语言中,如 Java,通常命名这些方法setXyzgetXyz但 Objective-C 将它们命名setXyzxyzgetter。

属性与实例变量

如今,您很少需要自己编写这些方法。通过使用 aproperty并让编译器为您生成此样板代码,您可以获得相同的好处。您示例中的属性看起来像这样并替换所有代码:

@property (weak) XYPoint *origin; // weak since your methods are not retaining the new value

您可以在此答案中了解使用属性与实例变量的原因。简而言之:拥有一个包装变量的方法使您能够对对象进行内存管理(如复制或保留),并可以调用其他启用 KVC/KVO 的方法,但它有一点开销。

于 2013-05-26T08:44:53.090 回答