我需要自己定义getter的行为,而不是合成我的getter / setter。
这样做,我收到警告,告诉我我还需要定义设置器,但我担心这样做符合KVC标准:
- (void) setPath:(NSString *)path {
_path = path;
}
或者我需要使用setValue:ForKey:
吗?
答案 0 :(得分:3)
是的,您发布的setter符合KVC / KVO标准。
那说,你为什么要定义两者?是因为@property
声明指定了atomic
吗?假设是这种情况,您应该切换到非原子。您可以将自己的访问器设置为原子,但这是一项大量的额外工作,除非您有一个很好的,很好理解使用atomic
属性的原因,否则您可能不需要。
答案 1 :(得分:1)
如果你只想覆盖getter,你仍然可以(并且应该)使用让编译器为你自动sythesize。这将合成你没有覆盖的方法(在你的情况下,设置器)。@synthesize
您的二传手符合KVC标准;这是不必要的。