如何解决如何观察NSObject属性的变化
| 我有一个具有70个属性的NSObject子类,我需要观察所有这些属性的变化,而不必使用以下方法逐个添加每个属性:[self addobserver: self
forKeyPath: @\"propertyname\"
options: NSkeyvalueObservingOptionNew
context: NULL];
。请让我知道最简单的方法。现在,我需要10.5及更高版本的解决方案。
解决方法
您可以使用Objective-C运行时函数class_copyPropertyList()来获取该类的所有属性,然后遍历列表并使用
property_getName()
来获取应与键值观察配合使用的内容。
或者您可以在所讨论的类上实现keyPathsForValuesAffectingValueForKey:
。在课程上新建一个键,我们将仅将其用于更改检测。然后实现上述方法,如果传入的字符串等于您的新键,则返回一个包含所有70个属性的名称的集合。然后,您只需在新密钥上进行KVO,任何更改便会收到通知。这样,您将不知道哪个属性发生了变化,只是其中一个发生了变化。
这可能有助于告诉我们您为什么需要执行此操作,因为可能会使用更好的设计模式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。