objective-c - 导入前对框架进行条件编译检查

标签 objective-c c ios conditional


在导入和使用该框架之前,我正在寻找一种方法来检查框架是否存在和/或它的类是否已定义。具体来说,框架就是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/

相关文章:

ios - 播放/暂停/停止本地存储的多个音频文件

ios - 如何将 UPC-A 转换为 UPC-E?

c - 如何向现有可变参数列表添加新参数?

ios - 分发失败并出现错误 itunes 连接

android - 如何在 Android React Native 应用程序中使用默认的 iOS 字体

objective-c - 在 NSMutableArray 中观察计数

ios - 触摸单元格并打开一个新的 View Controller

c - 在 C 中查找 CPU 利用率

c - 带有 C 文件输入和输出的 shell

ios - 如何测试应用本地化?