好奇,给出:
unsigned int pulseCounter_001;
@property(nonatomic, assign)unsigned int pulseCounter_001;
@synthesize pulseCounter_001;
有没有理由使用:
[self setPulseCounter_001:0];
或者只是使用:
pulseCounter_001 = 0;
样式明智我认为后者说“我们正在设置一个int”更好,只是好奇每个涉及的任何开销?
加里
答案 0 :(得分:4)
前者使用生成的setter方法设置整数。由于方法调用导致性能损失很小,但通常认为它更好,因为它封装了您的数据访问。
例如,如果您想在每次为此整数设置新值时记录某些内容,则可以在setter方法中执行此操作。封装很好,你应该使用它。
正如其他人所说,KVO是使用房产的另一个很好的理由。
答案 1 :(得分:3)
使用setter的另一个好理由是支持KVO。
答案 2 :(得分:2)
前者符合KVC标准,并会通知每个KVC观察者pulseCounter_001
的值已发生变化。后者不符合KVC,不会通知观察者价值变化。
因此,如果你有KVC观察者或pulseCounter_001
的绑定,后者将无法使用它们。