我有一个定义属性的 ClassA:
@interface ClassA : NSObject
@property (nonatomic) CGPoint property;
@end
该实现不会覆盖访问器。
ClassB 会覆盖 setter 来做一些额外的工作:
- (void)setProperty:(CGPoint)property {
[super setProperty:property];
[self someAdditionalWork];
}
在 ClassB 的另一种方法中,我尝试通过超级设置器设置此属性,以跳过额外的工作:
- (void)otherMethodInClassB {
// ...
super.property = newValue;
// ...
}
当我这样做时,不会发送该属性的 KVO 通知。如果我做同样的事情,但使用self
,KVO 通知按预期工作:
- (void)otherMethodInClassB {
// ...
self.property = newValue;
// ...
}
这里发生了什么?这是预期的行为吗?我找不到任何可以这么说的东西。