如果我@synthesize我的财产(艺术家)一切正常
如果我用这个覆盖setter方法:
- (void)setArtist:(GVArtist *)artist
{
GVArtist *oldArtist = _artist;
[self willChangeValueForKey:@"artist"];
_artist = [artist retain];
[self didChangeValueForKey:@"artist"];
[oldArtist release];
}
再做一遍,我明白了:
无法为观察者更新关键路径“artist.name”,很可能是因为键“艺术家”的值在没有发送适当的KVO通知的情况下发生了变化。检查MyObject类的KVO兼容性。
虽然看起来不错......?
答案 0 :(得分:4)
您不需要willChangeValueForKey:
和didChangeValueForKey:
内容;只要您的setter的名称符合KVO(-setArtist:
即可。)当您在myObj
上注册观察者时,Cocoa动态地创建对象的子类并添加{{1 }}和willChangeValueForKey:
自动调用。因此,您的二传手不需要手动执行这些操作,这可能会导致您的问题。