使用BOOL属性
苹果build议这样声明一个BOOL属性:
@property (nonatomic, assign, getter=isWorking) BOOL working;
正如我使用Objective-C 2.0属性和点符号,我使用self.working
访问此属性。 我知道我也可以使用[self isWorking]
– 但我不需要。
所以,因为我到处都使用点符号,为什么我应该定义一个额外的属性? 简单地写就可以了吗?
@property (nonatomic, assign) BOOL working;
或者我有什么好处,写getter=isWorking
在我的情况(使用点符号)?
谢谢!
苹果只是build议为了风格的目的而声明一个isX
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
苹果build议为文体的目的。如果你写这个代码:
@property (nonatomic,assign) BOOL working;
那么你不能使用[object isWorking]。
它会显示一个错误。 但是如果你使用下面的代码的手段
@property (assign,getter=isWorking) BOOL working;
所以你可以使用[object isWorking]。
使用具有原始types的属性没有任何好处。 @property
与分配NSObjects
堆一起使用,如NSString*
, NSNumber*
, UIButton*
等,因为内存pipe理访问器是免费创build的。 创buildBOOL
,该值始终分配在堆栈上,不需要任何特殊访问器来防止内存泄漏。 isWorking
是expression布尔值状态的stream行方式。
在另一种面向对象的语言,你会做一个可变的private bool working;
和两个访问器: SetWorking
for the setter和IsWorking
为访问者。