sau*_*urb 9 cocoa objective-c ios
我注意到Apple的文档中的一些代码示例在声明属性时显示以下样式:
@property (nonatomic, getter=isActivated) BOOL activated;
Run Code Online (Sandbox Code Playgroud)
据我所知,它允许您为getter方法指定某个名称.我想知道使用这种风格的原因和优势是什么.
我是否能够使用点符号来获取值(例如BOOL aBool = someObject.isActivated)?或者我应该使用
[someObject isActivated];
访问该属性?谢谢!
jtb*_*des 11
不,getter关键字仅更改方法名称.这个想法是你将像变量一样访问该属性:
if (self.activated) { ... }
self.activated = YES;
Run Code Online (Sandbox Code Playgroud)
但是当你向对象发送消息时,它是可读的代码:if ([self isActivated]) { ... }.
后者的种类。您不必使用该方法(调用someObject.activated仍然可以进行),但是它可以改善类接口的语义。名为的方法-activated可以返回ivar的值activated,或者可以做一些更深奥的事情(例如激活对象)。isActivated清楚地返回一个布尔值,表明对象是否被“激活”。