如何在Objective-C中在运行时查找字符串常量?

时间:2014-10-09 22:57:27

标签: ios objective-c objective-c-runtime

我的公司开发了一个广告SDK,用于调解其他广告网络。在运行时,它会使用NSClassFromString检查其他广告网络是否存在,并在这些类消息存在时发送这些消息。

这适用于Objective-C对象,但是如何在运行时加载字符串常量?在这种情况下,我想检查只能通过字符串常量(extern NSString* VungleSDKVersion;

获得的SDK版本

1 个答案:

答案 0 :(得分:8)

您可以使用CFBundleGetDataPointerForName在运行时查找常量值

NSString *lookupStringConstant(NSString *constantName) {
    void ** dataPtr = CFBundleGetDataPointerForName(CFBundleGetMainBundle(), (__bridge CFStringRef)constantName);
    return (__bridge NSString *)(dataPtr ? *dataPtr : nil);
}

使用示例:

NSString *version = lookupStringConstant(@"VungleSDKVersion");
NSLog(@"Version = %@",version);