在导入和使用该框架之前,我正在寻找一种方法来检查框架是否存在和/或是否定义了类.具体来说,框架是资产库.
目前,我能够使用Core Data框架执行此操作,因为该框架有一个名为CoreDataDefines.h的文件,它提供了预处理程序指令_COREDATADEFINES_H.这允许我简单地检查这样的定义:
#ifdef _COREDATADEFINES_H
#import <CoreData/CoreData.h>
// do something with Core Data
#else
// do something without using Core Data
#endif
Run Code Online (Sandbox Code Playgroud)
遗憾的是,Assets Library没有提供清晰的定义头文件,因此我正在寻找一种方法来编写我自己的#define语句,该语句可以在导入框架之前检查框架是否存在,就像我之前为Core Data所做的那样.
我试过这个:
#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
Run Code Online (Sandbox Code Playgroud)
......但没有运气.
编译器告诉我"Token不是预处理器子表达式中的有效二元运算符".
任何帮助总是非常感谢.