为什么在我可以使用KVC时创建存取方法?

时间:2013-11-14 13:58:59

标签: cocoa key-value-coding

我试图让我的脑袋围绕“键值编码”。

Apple's docs say:

  

本文档描述了NSKeyValueCoding非正式协议   定义了一种允许应用程序访问其属性的机制   一个对象通过名称(或键)间接,而不是直接通过   调用访问器方法或实例变量。

很少有人混淆我

  1. 自动为属性生成访问器方法,并提供内存管理,自定义验证等多种好处。当我们访问没有访问者方法的属性时,如Apple文档所述,这是否意味着我们正在失去优势存取方法?

  2. 如果KVC非常好并且它减少了代码,为什么我应该使用访问器方法,或者为什么访问器方法仍然存在?

  3. 我从未在使用KVC的任何教程或书籍或GitHub上的代码中看到过。为什么不广泛采用?

1 个答案:

答案 0 :(得分:4)

  1. 不,这只是意味着您没有在代码中明确调用访问者。 KVC实施为您调用访问者。

  2. KVC不一定会减少代码,而是允许不同的交互方式。它允许更多的运行时灵活性,并允许使用密钥路径。您不应将其视为完全替代品,而是在某些情况下作为替代品。

  3. 它被广泛使用,你需要寻找对valueForKey:setValue:forKey:的调用(协议的方法 - 除了这些之外还有很多)。