在Objective-C中,如何在运行时查找string常量?

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

这对Objective-C对象工作正常,但是我怎样才能在运行时加载string常量? 在这种情况下,我想检查一个只能通过string常量获得的SDK版本( extern NSString* VungleSDKVersion;

您可以使用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);