ios - ¿Cómo busco una constante de cadena en tiempo de ejecución en Objective-C?
objective-c-runtime (1)
Puede usar
CFBundleGetDataPointerForName
para buscar el valor de una constante en 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);
Mi empresa desarrolla un SDK publicitario que media en otras redes publicitarias.
En tiempo de ejecución, comprueba si las otras redes publicitarias están presentes mediante
NSClassFromString
y envía los mensajes de esas clases si están presentes.
Esto funciona bien para los objetos Objective-C, pero ¿cómo puedo cargar una constante de cadena en 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;
)