KVC兼容的二传手?

时间:2014-01-21 17:17:08

标签: objective-c accessor key-value-coding

我需要自己定义getter的行为,而不是合成我的getter / setter。

这样做,我收到警告,告诉我我还需要定义设置器,但我担心这样做符合KVC标准:

- (void) setPath:(NSString *)path {
    _path = path;
}

或者我需要使用setValue:ForKey:吗?

2 个答案:

答案 0 :(得分:3)

是的,您发布的setter符合KVC / KVO标准。

那说,你为什么要定义两者?是因为@property声明指定了atomic吗?假设是这种情况,您应该切换到非原子。您可以将自己的访问器设置为原子,但这是一项大量的额外工作,除非您有一个很好的,很好理解使用atomic属性的原因,否则您可能不需要。

答案 1 :(得分:1)

如果你只想覆盖getter,你仍然可以(并且应该)使用@synthesize 让编译器为你自动sythesize。这将合成你没有覆盖的方法(在你的情况下,设置器)。

您的二传手符合KVC标准;这是不必要的。

相关问题