¿Cómo busco una constante de cadena en tiempo de ejecución en Objective-C?

Mi empresa desarrolla un SDK publicitario que media otras redes publicitarias. En tiempo de ejecución, comprueba si las otras redes publicitarias están presentes utilizando NSClassFromString y envía esos mensajes a las clases si están presentes.

Esto funciona bien para objetos Objective-C, pero ¿cómo puedo cargar una cadena constante en el tiempo de ejecución? En este caso, quiero verificar la versión de un SDK que solo está disponible a través de una constante de cadena ( extern NSString* VungleSDKVersion; )

Puede usar CFBundleGetDataPointerForName para buscar el valor de una constante en el tiempo de ejecución

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

Ejemplo de uso:

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