gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:33 25 4
gpt4 key购买 nike


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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com