1

Я пытаюсь использовать некоторую библиотеку, построенную в XCode 5, для связи в каком-нибудь приложении в XCode 4. В этой библиотеке есть ссылки на константы, определенные в SDK iOS7, но не в SDK iOS6.Слабая ссылка на константы?

Так что я получаю эту ошибку:

Неопределенные символы для архитектуры armv7s: "_CBPeripheralManagerRestoredStateServicesKey", ссылочных от:

Есть ли способ, чтобы сохранить обратную совместимость с XCode 4 и SDK для iOS6?

+0

'h = dlopen ("/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth "); NSString * key = dlsym (h, "CBPeripheralManagerRestoredStateServicesKey"); ' –

+0

Спасибо! Используя ваш наконечник, я создал рабочую функцию. Это ниже. – AlexeyVMP

+0

Yap, извините, забыли уровень косвенности. Я рад, что вы сами пришли к правильному решению. –

ответ

0
+ (NSString *)getCoreBluetoothConstantByName:(NSString *)name 
    { 
    void *libHandle = dlopen("/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth", RTLD_LOCAL); 

if (libHandle != NULL) 
    { 
    NSString **key = dlsym(libHandle, [name cStringUsingEncoding:NSASCIIStringEncoding]); 

    dlclose(libHandle); 

    return [[*key copy] autorelease]; 
    } 

return nil; 
} 
Смежные вопросы