Apple建议以这种方式声明BOOL属性:
@property (nonatomic, assign, getter=isWorking) BOOL working;
由于我使用的是Objective-C 2.0属性和点表示法,因此我使用self.working
访问此属性。我知道我也可以使用[self isWorking]
- 但我没有。
所以,因为我到处都使用点符号,为什么要定义一个额外的属性?简单地写
是否可以@property (nonatomic, assign) BOOL working;
或者在我的案例中使用getter=isWorking
是否有任何好处(点符号的使用)?
谢谢!
答案 0 :(得分:197)
Apple只是建议为风格目的声明isX
getter。无论您是否自定义getter名称都无关紧要,只要您使用带有正确名称的点表示法或消息表示法即可。如果您要使用点符号,则没有区别,您仍然可以通过属性名称访问它:
@property (nonatomic, assign) BOOL working;
[self setWorking:YES]; // Or self.working = YES;
BOOL working = [self working]; // Or = self.working;
或者
@property (nonatomic, assign, getter=isWorking) BOOL working;
[self setWorking:YES]; // Or self.working = YES;, same as above
BOOL working = [self isWorking]; // Or = self.working;, also same as above
答案 1 :(得分:3)
Apple推荐用于样式目的。如果您编写此代码:
@property (nonatomic,assign) BOOL working;
然后你不能使用[object isWorking] 它会显示错误。但如果你使用下面的代码意味着
@property (assign,getter=isWorking) BOOL working;
所以你可以使用[object isWorking]。
答案 2 :(得分:-26)
使用具有基本类型的属性没有任何好处。 @property
与NSObjects
,NSString*
,NSNumber*
等堆分配UIButton*
一起使用,因为内存管理访问器是免费创建的。创建BOOL
时,该值始终在堆栈上分配,并且不需要任何特殊访问器来防止内存泄漏。 isWorking
只是表达布尔值状态的流行方式。
在另一种面向对象语言中,您可以为变量private bool working;
和两个访问者创建:SetWorking
用于setter,IsWorking
用于访问者。