【发布时间】:2014-06-07 06:19:09
【问题描述】:
在Ensuring KVC Compliance
文件说:
-set<Key>: 方法的实现不应执行验证。
如果验证适用于密钥,您的类应该实现 -validate<Key>:error:。
如果我实现了一个执行验证的 setXXX 方法,就会发生这种情况
使用kvo会不会导致性能问题?
【问题讨论】:
-
如果值无效,你的 setter 会做什么?
-
这取决于你在“验证”下的意思,如果需要以某种方式通知调用者关于不正确的值,应该实现
–validate<key>:error:- 如果设置器可以解决无效值的问题并且调用者不需要被通知,因为这将是“无所事事”,setter 可以完成这项工作。例如nil是不可接受的,因为NSString设置器可以使用@""自动覆盖。它也是一种验证,可以在不涉及调用者的情况下解决,但是文档当然必须提到这种行为。
标签: ios objective-c key-value-observing kvc