3
哪种方式更适合用于键值编码?让我们假设myController的类具有可变MYVARIABLE。有人可以写出不好的意见,这是不好的,为什么。KVC使用哪种方法?
// Method in the MyController class.
- (NSString*)myVariableKVC {
return NSStringFromSelector(@selector(myVariable));
}
[myController addObserver:self
forKeyPath:[myController myVariableKVC]
options:NSKeyValueObservingOptionNew
context:nil];
2.
[myController addObserver:self
forKeyPath:@"myVariable"
options:NSKeyValueObservingOptionNew
context:nil];
从我的观点第一部分的一点是越多越好。我们没有硬编码的字符串,当我们将使用重构 - >重命名...重命名时,它将被重命名。
这实际上是不正确的。如果选择器名称中存在拼写错误,编译器将不会产生警告。它最终与使用硬编码的魔术字符串没有区别。 – Darren 2013-02-22 12:28:43
哦,嘿,你是对的。我觉得它过去常常会给出“未知的选择器”警告......也许我很困惑。好吧。为后人编辑。 – ipmcc 2013-02-22 12:32:31
如果您有严格的编译器警告(您应该),如果该选择器不存在任何地方,您将会收到错误。 – 2013-02-22 12:37:08