Objective-C中@property声明中的“getter”关键字?

时间:2011-08-26 21:53:35

标签: objective-c ios cocoa

我注意到Apple文档中的一些代码示例在声明属性时显示以下样式:

@property (nonatomic, getter=isActivated) BOOL activated;

据我所知,它允许您为getter方法指定某个名称。我想知道使用这种风格的原因和优势是什么。

我是否可以使用点符号来获取值(例如BOOL aBool = someObject.isActivated)?或者我应该使用
[someObject isActivated]; 进入该物业?谢谢!

2 个答案:

答案 0 :(得分:11)

不,getter关键字只会更改方法名称。我们的想法是,您将像变量一样访问该属性:

if (self.activated) { ... }
self.activated = YES;

但当您向该对象发送消息时,它的可读代码为if ([self isActivated]) { ... }

答案 1 :(得分:5)

后者的种类。您不必使用方法调用someObject.activated仍然可以工作 - 但它可以让您改进类的接口的语义。一个名为-activated的方法可以返回ivar activated的值,或者它可以做一些更深奥的东西(比如激活对象); isActivated清楚地返回一个布尔值,表示该对象是否被“激活”。