>我正在创建一个可能包含多个第三方框架的框架。其他第三方框架是通过cocoapods安装的。当示例应用程序编译时,是否可以检查我的框架是否存在某个第三方框架,如果不关闭该部分代码或类,则不会抛出错误?当框架确实存在时,我想打开代码或类,以便可以使用类或代码。
我尝试在我自己创建的cocoapods中使用一些方法(参见代码(,但它并没有真正起作用。
__has_include('class.h')
Class klass = NSClassFromString(@"class.h");
return klass != nil;
基本上上面的代码总是返回 false 或不包含 class.h,即使通过 cocoapods 安装了第三方框架。
您如何配置框架以安装第三方库?
如果你为框架使用多个目标,每个目标都包含一组不同的第三方框架,通过 cocoapods 安装,你可以很容易地使用"预处理器宏"(ObjC(或"其他 Swift 标志"(Swift(。
您可以在框架构建设置中设置它们,具体取决于该目标中使用的库,并在代码中使用 #ifdef (ObjC( 或 #if (swift( 检查它们
在调用 NSClassFromString
时使用类的 Objective C 或 Swift 符号名称 - 而不是头文件名。
您的代码示例不会检查__has_include
的结果,因此无论如何都会执行以下代码,并且它实际上根本不执行#include
。您可以使用#if
内的__has_include
来保护#include
和任何关联的代码,例如:
#if __has_include("class.h")
// code if include file is present
#include "class.h"
... // any other code
#else
... // code if include file is not present
#endif
有关更多详细信息,请参阅 C 预处理器文档。呵呵