从Apple的文档中我发现了以下内容:
使用键路径设置值与使用它们设置不同 Objective-C属性。您不能使用属性表示法来设置 转换价值观。您必须使用setValue:forKeyPath:方法 前面的密钥路径字符串。
根据我的理解,我们必须拥有ivars的属性才能使用KVC。
但是从上面的段落来看,似乎没有说:
使用关键路径设置值与设置值不一样 Objective-C属性。您无法使用属性表示法进行设置 转换价值。
有人可以向我解释原因吗?也许我错过了一些东西,因为我的理解是我们必须拥有使用KVC的属性。
答案 0 :(得分:1)
根据我的理解,我们必须拥有ivars的属性才能使用KVC。
这是不正确的。 KVC将使用属性生成的访问器方法或其他(适当命名的)访问器方法(如果存在),但它们不是必需的。如果它们不存在,KVC将尝试直接访问实例变量。
检查this Apple ref,了解KVC如何搜索要更新的密钥。