我试图让我的脑袋围绕“键值编码”。
本文档描述了
NSKeyValueCoding
非正式协议 定义了一种允许应用程序访问其属性的机制 一个对象通过名称(或键)间接,而不是直接通过 调用访问器方法或实例变量。
很少有人混淆我
自动为属性生成访问器方法,并提供内存管理,自定义验证等多种好处。当我们访问没有访问者方法的属性时,如Apple文档所述,这是否意味着我们正在失去优势存取方法?
如果KVC非常好并且它减少了代码,为什么我应该使用访问器方法,或者为什么访问器方法仍然存在?
我从未在使用KVC的任何教程或书籍或GitHub上的代码中看到过。为什么不广泛采用?
答案 0 :(得分:4)
不,这只是意味着您没有在代码中明确调用访问者。 KVC实施为您调用访问者。
KVC不一定会减少代码,而是允许不同的交互方式。它允许更多的运行时灵活性,并允许使用密钥路径。您不应将其视为完全替代品,而是在某些情况下作为替代品。
它被广泛使用,你需要寻找对valueForKey:
,setValue:forKey:
的调用(协议的方法 - 除了这些之外还有很多)。