【发布时间】:2014-09-03 20:08:55
【问题描述】:
我想在 UIView 的属性上使用 KVO,但我不知道它是否合规。 以“隐藏”属性为例。
我去UIView类的头文件,找不到指示,我也去这个属性的文档。有人谈到“检查参考是否合规”,他在说什么参考?
【问题讨论】:
我想在 UIView 的属性上使用 KVO,但我不知道它是否合规。 以“隐藏”属性为例。
我去UIView类的头文件,找不到指示,我也去这个属性的文档。有人谈到“检查参考是否合规”,他在说什么参考?
【问题讨论】:
听起来他们在这里指的是(相当模糊)KVC 合规性文档:
具体来说,您需要查看类是否响应给定键的valueForKey: 和setValue:forKey:。关于您应该如何实际检查合规性的文档相当多余。我的第一个想法是将您的代码包装在一个 try/catch 块中,然后捕获异常,但考虑到该异常通常是如何抛出的,这可能行不通。
一般的假设是 UIKit 中的大多数对象不 KVO 兼容,如果你需要它们,你可以子类化并实现它。你可以在这里看到一个非常相似的问题/重复,Apple Frameworks Evangelist Dave Delong 的回答:iOS: How do I know if a property is KVO-compliant?
【讨论】:
addObserver 方法观察属性变化的能力。这些都容易与 Key Value Compliance 混淆,Key Value Compliance 指的是为 Key Value Observing 正确设置的属性。