0

最近我在读“可可设计模式”。在谈到KVC时,它说“KVC首先检查名为-< key >或-get< Key >的访问器是否存在,如果不存在,它将尝试名为< key >或_< key >的实例变量”。obj-c 运行时可以检查实例变量是否存在吗?我认为它只能在编译时完成......

任何答案表示赞赏^_^

4

1 回答 1

1

确实可以。与此相关的文档是Objective-C 运行时参考;具体来说,class_getInstanceVariable. 文档遗漏的部分是该函数NULL在类的实例没有此类变量时返回。

据推测,KVC 将对象的类和候选变量名称传递给该函数,运行时为其提供的第一个名称Ivar就是它使用的名称。

于 2011-01-20T15:19:55.387 回答