我的公司开发了一个广告SDK,用于调解其他广告网络。在运行时,它会使用NSClassFromString
检查其他广告网络是否存在,并在这些类消息存在时发送这些消息。
这适用于Objective-C对象,但是如何在运行时加载字符串常量?在这种情况下,我想检查只能通过字符串常量(extern NSString* VungleSDKVersion;
)
答案 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);