使用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为访问者。