有人请解释一下吗?

时间:2013-05-26 08:38:38

标签: objective-c methods user-defined-functions

这些方法位于名为Rectangle的类中,这是实现文件Rectangle.m

的一部分
#import "XYPoint.h"

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

- (XYPoint *)origin {
    return origin;
}

1 个答案:

答案 0 :(得分:3)

关于Objective-C没什么特别之处。它只是名为origin的属性的setter和getter。

使用

设置新原点时
self.origin = /*some new value*/;

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

将调用第一种方法。

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


命名约定

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

属性与实例变量

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

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

您可以阅读有关使用属性与实例变量in this answer的原因。简而言之:使用方法包装变量使您可以对对象进行内存管理(如复制或保留),并且可以调用启用KVC / KVO的其他方法,但它有一点点开销。