OC语法 KVC

  • Key-Value-Coding 键值编码

可以通过一个Key来访问摸个属性。

常见的API:

  1. setValue:forKeyPath:
  2. setValue:forKey:
  3. valueForKeyPath:
  4. valueForKey:
  • 实现原理
    • setValue:forKey:

      • 通过key 按照 setKey: 、_setKey:的顺序查找方法。
        • 未查到,询问是否可以直接访问成员变量accessInstanceVariablesDirectly:默认返回YES
          • 返回YES。 按照 setKey: 、_setKey:的顺序查找方法修改成员变量。
          • 返回NO。 调用setValue:forUndefinedKey:方法报错。
      • 查到后直接调用。
    • valueForKey:

      • 通过key 按照 getKey: 、key: 、_Key: 、_isKey:的顺序查找方法。
        • 未查到,询问是否可以直接访问成员变量accessInstanceVariablesDirectly:默认返回YES
          • 返回YES。 按照 getKey: 、key: 、_Key: 、_isKey:的顺序查找方法取值。
          • 返回NO。 调用setValue:forUndefinedKey:方法报错。
      • 查到后直接调用。

你可能感兴趣的:(OC语法 KVC)