NSString *statusValue;
NSString *currentValue;
@property(retain, nonatomic) NSString *statusValue;
@property(retain, nonatomic) NSString *currentValue;
@synthesize statusValue;
@sythnesize currentValue;
鉴于上述情况,如果我将一个变量设置为另一个变量,我应该这样做......
[self setStatusValue: currentValue];
或者我应该再次使用该属性并使用...
[self setStatusValue: [self currentValue]];
我认为后者(尽管可能有些过分)确实告诉读者我们正在使用其中一个对象实例变量,而不是一些局部变量。
真的很好奇,我跟底部一样,但只是想在有人看我的代码之前检查,什么时候“什么鬼”:)
gary
答案 0 :(得分:3)
两者都很好。您使用哪一种可能取决于您希望的副作用。例如,通过使用[self currentValue]
,您可以触发willAccessValueForKey:
和didAccessValueForKey:
KVO通知,但前提是某人实际上正在观察该属性,并且只有当它是NSManagedObject
子类时。通常没有任何重大副作用。
就我个人而言,我可能会使用后一个例子,这样我就不必担心如果我决定改变它就改变了30个地方的iVar名称(当然,Refactor-> Rename工具将是在这种情况下使用的权利,但仍然是。)
答案 1 :(得分:2)
我在没有令人信服的理由的情况下使用后者。这样它就可以使用重写的访问器,更改的实现等,而无需任何更改。例如,我可能决定从存储statusValue作为字符串切换,而是存储状态对象,statusValue通过该对象。如果我在整个地方手动访问ivar,我必须更改所有这些。如果我正在通过类的公共接口,我只需要更改一个访问器方法。
答案 2 :(得分:0)
这是有效的,更具表现力的IMO:
self.statusValue = currentValue;