【发布时间】:2011-11-12 00:10:44
【问题描述】:
在导入和使用该框架之前,我正在寻找一种方法来检查框架是否存在和/或它的类是否已定义。具体来说,框架就是 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
不幸的是,资产库没有提供清晰的定义头文件,所以我正在寻找一种方法来编写自己的 #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
...但没有运气。
编译器告诉我“令牌不是预处理器子表达式中的有效二元运算符。”
我们非常感谢任何帮助。
【问题讨论】:
-
你考虑过使用CMake吗?它可以检查现有的 Mac OS X 框架。我不知道如何查找 iOS 框架,但作为最后的手段,您可以编写自己的 cmake 模块来查找它。
-
这有点不对劲。
-
感谢@Maciek 提供的信息,但我认为 CMake 不是我想要的。基本上我只想要一个预处理器指令来检查项目包的框架中是否存在头文件。
-
在哪里可以找到解决方案?
标签: objective-c c ios conditional