MST

星途 面试题库

面试题:Objective-C中KVC的基本原理及赋值流程

请阐述Objective-C中KVC(Key - Value Coding)的基本工作原理,并且详细说明当使用KVC为对象的属性赋值时,系统是按照怎样的流程查找和设置值的。
43.4万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

KVC基本工作原理

KVC是一种通过键值对来访问对象属性的机制,它提供了一种间接访问对象属性的方法,不依赖于对象的存取方法。KVC基于一种约定俗成的命名规范和查找机制,允许开发者通过字符串形式的键来访问和修改对象的属性值,即使这些属性没有对应的直接访问方法。

使用KVC为对象属性赋值时的查找和设置值流程

  1. 直接访问
    • 系统首先会检查对象是否有对应的set<Key>:方法。如果有,就直接调用这个方法来设置属性值。例如,对于属性name,系统会查找setName:方法。
  2. 间接访问
    • 如果没有找到set<Key>:方法,系统会检查对象是否有_<key><key>形式的实例变量。如果有,会直接访问并设置这个实例变量的值。比如,对于属性name,会查找_namename实例变量。
  3. 集合操作方法
    • 如果对象遵循NSKeyValueCoding协议且实现了setValue:forUndefinedKey:方法,系统会调用这个方法来处理赋值操作。
    • 如果上述步骤都不满足,系统会抛出NSUnknownKeyException异常。

对于集合属性,KVC提供了特殊的集合操作方法,例如@count@sum等,用于对集合中的元素进行操作。在处理集合属性的赋值时,同样遵循上述基本流程,但也会涉及到集合相关的特定处理逻辑。