在Int上使用setter?

时间:2010-04-27 14:51:27

标签: iphone objective-c cocoa-touch

好奇,给出:

unsigned int pulseCounter_001;
@property(nonatomic, assign)unsigned int pulseCounter_001;
@synthesize pulseCounter_001;

有没有理由使用:

[self setPulseCounter_001:0];

或者只是使用:

pulseCounter_001 = 0;

样式明智我认为后者说“我们正在设置一个int”更好,只是好奇每个涉及的任何开销?

加里

3 个答案:

答案 0 :(得分:4)

前者使用生成的setter方法设置整数。由于方法调用导致性能损失很小,但通常认为它更好,因为它封装了您的数据访问。

例如,如果您想在每次为此整数设置新值时记录某些内容,则可以在setter方法中执行此操作。封装很好,你应该使用它。

正如其他人所说,KVO是使用房产的另一个很好的理由。

答案 1 :(得分:3)

使用setter的另一个好理由是支持KVO

答案 2 :(得分:2)

前者符合KVC标准,并会通知每个KVC观察者pulseCounter_001的值已发生变化。后者不符合KVC,不会通知观察者价值变化。

因此,如果你有KVC观察者或pulseCounter_001的绑定,后者将无法使用它们。