プロパティを定義する ClassA があります。
@interface ClassA : NSObject
@property (nonatomic) CGPoint property;
@end
実装はアクセサーをオーバーライドしません。
ClassB はセッターをオーバーライドして、追加の作業を行います。
- (void)setProperty:(CGPoint)property {
[super setProperty:property];
[self someAdditionalWork];
}
ClassB の別のメソッドでは、追加の作業をスキップするために、スーパー セッターを介してこのプロパティを設定しようとしています。
- (void)otherMethodInClassB {
// ...
super.property = newValue;
// ...
}
これを行うと、プロパティの KVO 通知が送信されません。同じことを行って を使用するself
と、KVO 通知は期待どおりに機能します。
- (void)otherMethodInClassB {
// ...
self.property = newValue;
// ...
}
何が起きてる?これは予想される動作ですか?そう言い切れるものは見当たりませんでした。