如何解决此键值兼容吗?
| 如果我@synthesize我的财产(艺术家),一切正常 为keyPath artist.name添加观察者 调用[myObj setValue:newArtist forKey:@ \“ artist \”]; 成功。 如果我以此覆盖setter方法:- (void)setArtist:(GVArtist *)artist
{
GVArtist *oldArtist = _artist;
[self willChangeValueForKey:@\"artist\"];
_artist = [artist retain];
[self didChangeValueForKey:@\"artist\"];
[oldArtist release];
}
然后再做一次,我得到:
无法为的密钥路径“ artist.name”的观察者进行更新,这很可能是因为未发送适当的KVO通知而更改了密钥“ artist”的值。检查MyObject类的KVO兼容性。
不过对我来说很好。
解决方法
您不需要
willChangeValueForKey:
和didChangeValueForKey:
东西;只要您的设置者的名字是KVO兼容的(即ѭ3),所有操作都会自动处理。当您在myObj
上注册观察者时,Cocoa动态地创建对象的子类并自动添加willChangeValueForKey:
和didChangeValueForKey:
调用。因此,您的安装程序不需要手动进行操作,这可能会导致您遇到问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。