【问题标题】:How to know if a class is KVO compliant for a certain property?如何知道某个类是否符合某个属性的 KVO?
【发布时间】:2014-09-03 20:08:55
【问题描述】:

我想在 UIView 的属性上使用 KVO,但我不知道它是否合规。 以“隐藏”属性为例。

我去UIView类的头文件,找不到指示,我也去这个属性的文档。有人谈到“检查参考是否合规”,他在说什么参考?

【问题讨论】:

    标签: ios key-value-observing


    【解决方案1】:

    听起来他们在这里指的是(相当模糊)KVC 合规性文档:

    https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/Compliant.html#//apple_ref/doc/uid/20002172

    具体来说,您需要查看类是否响应给定键的valueForKey:setValue:forKey:。关于您应该如何实际检查合规性的文档相当多余。我的第一个想法是将您的代码包装在一个 try/catch 块中,然后捕获异常,但考虑到该异常通常是如何抛出的,这可能行不通。

    一般的假设是 UIKit 中的大多数对象 KVO 兼容,如果你需要它们,你可以子类化并实现它。你可以在这里看到一个非常相似的问题/重复,Apple Frameworks Evangelist Dave Delong 的回答:iOS: How do I know if a property is KVO-compliant?

    【讨论】:

    • 是的,我已经阅读了那个问题,但我正在寻找一种方法来判断该属性是否为 KVC,而无需通过代码进行尝试,并查看它是否有效。我怀疑有一种方法可以更快地检测到它。
    • 澄清一下,KVC(键值编码)和KVO(键值观察)是非常不同的东西。 KVC 是使用您描述的方法设置/获取属性的能力。 KVO 是使用addObserver 方法观察属性变化的能力。这些都容易与 Key Value Compliance 混淆,Key Value Compliance 指的是为 Key Value Observing 正确设置的属性。
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多