我希望以int
的名称获取extern const
的值。
例如在我的.h文件中:
extern const int MY_INT_CONST;
在我的.m文件中:
const int MY_INT_CONST = 0;
我想要的是什么:
- (void) method {
int i = [getMyConstantFromString:@"MY_INT_CONST"];
}
我该怎么做?
我在RunTime api中搜索过,但没有找到任何内容。
答案 0 :(得分:1)
没有简单的方法可以做到这一点。语言和运行时都没有为此提供便利。
可以使用动态加载程序的API来查找符号的地址名称。
// Near top of file
#include <dlfcn.h>
// elsewhere
int* pointer = dlsym(RTLD_SELF, "MY_INT_CONST");
if (pointer)
{
int value = *pointer;
// use value...
}
请注意,这是传递给dlsym()
的C风格字符串。如果您有NSString
,则可以使用-UTF8String
来获取C风格的字符串。