我认为自制的@property setter 应该是这样的:
-(void) setFoo:(Foo *)newFoo {
// Safeguards
// ...
[self willChangeValueForKey:@"foo"];
// Switcheroo
// ...
[self didChangeValueForKey:@"foo"];
}
但是我在博客文章中看到了很多代码,这些代码是由比我做 Cocoa 的人的时间长得多的人写的,就像这样:
-(void) setFoo(Foo *)newFoo {
// Safeguards
// ...
// Switcheroo
// ...
}
所以我的问题是,我们需要调用 KVO 通知方法吗?或者,如果您使用的是现代运行时,它是否在您更新私有 iVar 时神奇地完成了?