如何在libobjc.A.dylib中调用函数?

时间:2016-09-03 01:38:20

标签: objective-c dynamic-linking dyld kvc

我正在研究KVC是如何工作的,我设置了一个符号断点_class_getVariable,当向对象发送setValue:forKey:消息时,将调用该函数。

所以我写了这个:

extern Ivar _class_getVariable(Class cls, const char *name, Class *memberOf);

并在构建设置中向-Wl,-undefined,dynamic_lookup添加标记Other Linker Flags以指定此未定义的符号将动态查找。但是当我调用这个函数时,我仍然会从dyld中得到错误:

dyld: lazy symbol binding failed: Symbol not found: __class_getVariable
Referenced from: /Users/Stan/Library/Developer/Xcode/DerivedData/Obj-C-aiaspdiyxsvqblfjkvreemnpekov/Build/Products/Debug/Obj-C
Expected in: flat namespace

dyld: Symbol not found: __class_getVariable
Referenced from: /Users/Stan/Library/Developer/Xcode/DerivedData/Obj-C-aiaspdiyxsvqblfjkvreemnpekov/Build/Products/Debug/Obj-C
Expected in: flat namespace

Program ended with exit code: 9

我查过了objc-rumtime的源代码,该功能确实存在于那里。有什么方法可以称之为吗?

更新

我在runtime.h中找到了一个函数class_getInstanceVariable,作为获取名称的ivar的替代品。但我仍然对如何拨打_class_getVariable感到好奇。

提前致谢:)

0 个答案:

没有答案