如何得到一个" extern const int"价值的名称

时间:2015-04-29 07:19:45

标签: ios objective-c reflection

我希望以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中搜索过,但没有找到任何内容。

1 个答案:

答案 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风格的字符串。