在导入和使用该框架之前,我正在寻找一种方法来检查框架是否存在和/或它的类是否已定义。具体来说,框架就是Assets Library。
目前,我可以使用 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
不幸的是,Assets Library 没有提供明确的定义头文件,所以我正在寻找一种方法来编写我自己的 #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
...但没有运气。
编译器告诉我“标记不是预处理器子表达式中的有效二元运算符。”
非常感谢任何帮助。
最佳答案
如果您知道框架应该导入哪个类,您可以检查它是否已加载:
BOOL isFrameworkLoaded = (NSClassFromString(@"MyClassNameFromTheFramework") != nil);
关于objective-c - 导入前对框架进行条件编译检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331811/