iOS - определение доступности Accelerate.framework во время выполнения - PullRequest
4 голосов
/ 21 августа 2010

Есть ли способ определить, доступен ли Accelerate.framework во время выполнения из простых файлов C или C ++ ?

Все примеры, которые я нашел для условного кодирования, требуют интроспекции Objective-C (например, respondsToSelector) и / или Apis Objective-C (например, член systemVersion UIDevice)

1 Ответ

4 голосов
/ 21 августа 2010

Обычный трюк для этого заключается в том, что вы слабо связываете с платформой и затем проверяете указатель функции, экспортированный этой платформой, на фактическую доступность.Если фреймворк не смог связать, потому что он недоступен, тогда функция будет NULL.

Так что для Accelerate.framework вы бы сделали что-то вроде этого:

#include <Accelerate/Accelerate.h>

if (cblas_sdsdot) {
    NSLog(@"Yay we got Accelerate.framework");
} else {
    NSLog(@"Oh no, no Accelerate.framework");
}

Это описанов TN2064 - обеспечение двоичной обратной совместимости

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...