如果框架不存在,Objective-c 在运行时关闭类/代码块



>我正在创建一个可能包含多个第三方框架的框架。其他第三方框架是通过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 预处理器文档。呵呵

相关内容

  • 没有找到相关文章

最新更新