わかりました、私は自分自身に返信します:) 私のソリューションは、Apurv ソリューションと単体テストを組み合わせたものです。
ここにあります:
1MyClass
defineで観測されたプロパティごとに:
static NSString* MyClassPropertyNameNumber = @"number";
2- (void)observeValueForKeyPath:(NSString *)keyPath ...
実装では、定義済みの NSString のみを使用します。
- (void)observeValueForKeyPath:(NSString *)keyPath ...
{
if ([keyPath isEqualToString:MyClassPropertyNameNumber]) ...
}
3 MyClass オブジェクトがセレクターsetNumber:
に応答するかどうかをチェックする単体テストを作成します。number
- (void)testMyClass
{
SEL numberGetter = NSSelectorFromString(MyClassPropertyNameNumber);
SEL numberSetter = NSSelectorFromString([NSString stringWithFormat:@"set%@:", MyClassPropertyNameNumber]);
MyClass* testMyClass = [[MyClass alloc] init];
if (![testMyClass respondsToSelector:numberGetter] || ![testMyClass respondsToSelector:numberSetter])
{
STFail(@"%@: %@ property name has changed! Please update your defined property name!", NSStringFromClass([MyClass class]), MyClassPropertyNameNumber);
}
}
プロパティ名を変更し、定義されたプロパティ名を更新しないと失敗します。
私はそれが誰かに役立つことを願っています:)