2014-10-09 3 views
4

저희 회사는 다른 광고 네트워크를 중재하는 광고 SDK를 개발합니다. 런타임에 NSClassFromString을 사용하여 다른 광고 네트워크가 있는지 확인한 다음 해당 클래스 메시지가있는 경우 해당 클래스 메시지를 보냅니다.Objective-C에서 런타임시 문자열 상수를 어떻게 찾습니까?

Objective-C 개체에서 제대로 작동하지만 런타임에 문자열 상수를로드하려면 어떻게해야합니까? 이 경우, 나는 문자열 상수를 통해서만 사용할 수있는 SDK의 버전을 확인하려면 (extern NSString* VungleSDKVersion;)

답변

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); 
관련 문제