Я ищу способ проверить, существует ли среда и/или если ее классы определены, перед импортом и использованием этой структуры. В частности, основой является библиотека активов.
В настоящее время я могу сделать это с базой данных Core Data, поскольку в этой структуре есть файл CoreDataDefines.h, который предоставляет директиву препроцессора _COREDATADEFINES_H. Это позволяет мне просто проверить, что такое defintion:
#ifdef _COREDATADEFINES_H
#import <CoreData/CoreData.h>
// do something with Core Data
#else
// do something without using Core Data
#endif
К сожалению, в библиотеке ресурсов не содержится явный заголовочный файл определений, поэтому я ищу способ написать свой собственный оператор #define, который может проверить существование фреймворка перед импортом, так же как у меня есть сделано для данных ядра выше.
Я пробовал это:
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
// import assets library if defined !
#define ASSETSLIBRARY_DEFINE (NSClassFromString(@"ALAsset") != nil)
#if ASSETSLIBRARY_DEFINE
#import <AssetsLibrary/AssetsLibrary.h>
#endif
#endif
... но не повезло.
Компилятор говорит мне, что" токен не является допустимым двоичным оператором в подвыражении препроцессора".
Любая помощь всегда приветствуется.