2

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

苹果的文档说:

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

很少有事情让我感到困惑

  1. 访问器方法是为属性自动生成的,并提供了一些好处,如内存管理、自定义验证等。当我们访问一个没有访问器方法的属性时,正如 Apple 文档所说,这是否意味着我们失去了访问器方法的好处?

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

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

4

1 回答 1

4
  1. 不,这只是意味着您没有在代码中显式调用访问器。KVC 实现会为您调用访问器。

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

  3. 它被广泛使用,您需要寻找对 , 的调用valueForKey:setValue:forKey:协议的方法 - 不仅仅是这对夫妇)。

于 2013-11-14T14:02:54.230 回答