ios - 如果框架不存在,Objective-c 在运行时关闭类/代码块
问题描述
我正在创建一个可以包含多个第三方框架的框架。其他第三方框架是通过 cocoapods 安装的。如果存在某个第三方框架,是否可以在示例应用程序编译时检查我的框架,如果不关闭该部分代码或类,则不会引发错误?当框架确实存在时,我想打开代码或类,以便可以使用该类或代码。
我尝试在自己创建的 cocoapods 中使用一些方法(参见代码),但它并没有真正起作用。
__has_include('class.h')
Class klass = NSClassFromString(@"class.h");
return klass != nil;
基本上,即使通过 cocoapods 安装了第三方框架,上面的代码也总是返回 false 或不包含 class.h。
解决方案
你如何配置你的框架是否安装第三方库?
如果您为您的框架使用多个目标,每个目标都包含通过 cocoapods 安装的一组不同的第三方框架,您可以轻松使用“预处理器宏”(ObjC)或“其他 Swift 标志”(Swift)。
您可以在您的框架构建设置中设置它们,具体取决于该目标中使用的库,并在您的代码中使用 #ifdef (ObjC) 或 #if (swift) 检查它们
推荐阅读
- javascript - 级联下拉菜单在 mvc 中返回未定义
- java - 选择 clean 时 Eclipse 没有构建整个工作区复选框
- amazon-web-services - 使用 NLB 时,仅指定 HTTPS 有效,HTTP 无效
- python - 如何在给定日期时间列的每 5 分钟内使用 2 个不同的列计算不同的值?
- bash - sed 命令查找字符串并替换另一个字符串(txt 格式)
- amazon-web-services - 生成非 Terraform 创建的资源列表的最佳方法
- asp.net-core-mvc - '无法从程序集'System.Web加载类型'System.Web.UI.PersistChildrenAttribute',
- javascript - Sharepoint 上的补丁更新 - 提供的参数之一是不可接受的
- javascript - 通过文档 ID 中的短语/字符串或文档中数组的内容进行 Firestore 查询
- asp.net-core - 如何在 IHealthCheck 实现中使用数据库配置对发出 http 请求的服务进行健康检查?