Какой способ лучше использовать для кодирования ключевых значений? Предположим, что MyController класс имеет переменную myVariable. Может ли кто-нибудь написать мнение, хорошее, что плохо и почему.Какой подход использовать для KVC?
1.
// 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];
С моей точки зрения первой части более лучше. У нас нет жестко закодированных строк, и когда мы будем переименовывать с помощью Refactor -> Rename ..., то он будет переименован.
Это действительно неверно. Компилятор не выдаст предупреждение, если в названии селектора есть опечатка. Он заканчивается тем, что не отличается от использования жестко заданной магической строки. – Darren
О, эй, ты прав. Я чувствую, что он использовал, чтобы дать предупреждения «неизвестного селектора» ... может быть, я смущен. Ну что ж. Отредактировано для потомков. – ipmcc
Если у вас есть строгие предупреждения о компиляторе (что вам нужно), вы получите сообщение об ошибке, если этот селектор не существует нигде. –