使用BOOL属性

Pat*_*ick 108 properties objective-c ios

Apple建议以这种方式声明BOOL属性:

@property (nonatomic, assign, getter=isWorking) BOOL working;
Run Code Online (Sandbox Code Playgroud)

因为我使用的是Objective-C 2.0属性和点符号,所以我使用了这个属性self.working.我知道我也可以使用[self isWorking]- 但我没有必要.

所以,因为我在任何地方使用点符号,为什么要定义一个额外的属性?简单地写就可以了

@property (nonatomic, assign) BOOL working;
Run Code Online (Sandbox Code Playgroud)

或者getter=isWorking在我的案例中是否有任何好处(点符号的使用)?

谢谢!

Bol*_*ock 202

Apple只是建议isX为风格目的声明一个getter.无论您是否自定义getter名称都无关紧要,只要您使用带有正确名称的点表示法或消息表示法即可.如果您要使用点符号,则没有区别,您仍然可以通过属性名称访问它:

@property (nonatomic, assign) BOOL working;

[self setWorking:YES];         // Or self.working = YES;
BOOL working = [self working]; // Or = self.working;
Run Code Online (Sandbox Code Playgroud)

要么

@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
Run Code Online (Sandbox Code Playgroud)

  • Apple _recommends_声明那些`isX` getter有点奇怪,但Xcode无法在自动完成弹出窗口中列出它们.(在我的例子中)`working`列在那里,但`isWorking`不是.所以我认为声明BOOL getter没有任何好处.我必须做更多才能使用它们(声明getter)但我得到的更少(没有自动完成). (5认同)
  • 当然,它更多地与关键值编码兼容,而不仅仅是风格目的? (4认同)