【发布时间】:2011-01-27 06:18:41
【问题描述】:
关于“确保 KVO 合规性”, 有一些官方定义似乎很难理解
为了考虑 特定属性的 KVO 兼容, 一个类必须确保以下内容;
类必须是键值编码 符合该属性 在确保 KVC 合规性中指定。
该类必须允许自动 观察员通知 财产,或实施手册 属性的键值观察。
谁能给出更具体的例子来说明这一点?谢谢
【问题讨论】:
关于“确保 KVO 合规性”, 有一些官方定义似乎很难理解
为了考虑 特定属性的 KVO 兼容, 一个类必须确保以下内容;
类必须是键值编码 符合该属性 在确保 KVC 合规性中指定。
该类必须允许自动 观察员通知 财产,或实施手册 属性的键值观察。
谁能给出更具体的例子来说明这一点?谢谢
【问题讨论】:
查看Ensuring KVO Compliance Key-Value Observing Programming Guide 的自动与手动支持部分。遵循方法和/或 ivars 的命名约定基本上可以实现合规性。
根据我的经验,KVO 倾向于“正常工作”,这很好。
【讨论】:
当您使用@property 标记create getters/ setters 时,魔术会自动连接到一对一关系,您只需要添加观察者... 并实现观察... 方法来捕捉更新。
真正的挑战是了解如何实现对多键值合规性以使可变集或数组工作。 documentation here 是关键,理解有两个部分......索引集合和无序集合。它确实帮助我理解,如果我的@property 是 NSMutableArray,您需要查看 Indexed 区域中的方法,如果您的 @property 是 NSMutableSet,则需要查看 Unordered 文档。
即使您不打算使用它们,也需要实现一些必需的方法。
【讨论】: