最近我在读“可可设计模式”。在谈到KVC时,它说“KVC首先检查名为-< key >或-get< Key >的访问器是否存在,如果不存在,它将尝试名为< key >或_< key >的实例变量”。obj-c 运行时可以检查实例变量是否存在吗?我认为它只能在编译时完成......
任何答案表示赞赏^_^
最近我在读“可可设计模式”。在谈到KVC时,它说“KVC首先检查名为-< key >或-get< Key >的访问器是否存在,如果不存在,它将尝试名为< key >或_< key >的实例变量”。obj-c 运行时可以检查实例变量是否存在吗?我认为它只能在编译时完成......
任何答案表示赞赏^_^
确实可以。与此相关的文档是Objective-C 运行时参考;具体来说,class_getInstanceVariable
. 文档遗漏的部分是该函数NULL
在类的实例没有此类变量时返回。
据推测,KVC 将对象的类和候选变量名称传递给该函数,运行时为其提供的第一个名称Ivar
就是它使用的名称。