最近我正在阅读“可可设计模式”。在谈到KVC时,它说“KVC检查名为 - < key >或-get< Key >的访问者是否首先存在,如果没有,它会尝试名为< key >或_< 键>“的实例变量。 obj-c运行时可以检查实例变量是否存在?我认为它只能在编译时完成......
感谢任何答案^ _ ^
答案 0 :(得分:1)
确实可以。相关文件是the Objective-C Runtime Reference;具体而言,class_getInstanceVariable
。文档遗漏的部分是,当类的实例没有这样的变量时,该函数返回NULL
。
KVC可能会将对象的类和候选变量名称传递给该函数,并且运行时出现Ivar
的第一个名称就是它所使用的名称。