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