我正在尝试找到打包包含可选类(例如 ClassA)的静态库(我们称之为 Lib1)的最佳方法,该类本身需要第二个静态库(Lib2)。换句话说,只有在项目代码中引用了 ClassA 时才需要 Lib2。事情似乎工作正常,除非在不使用 ClassA(因此不包括 Lib2)的项目中使用 Lib1,但需要 -ObjC 链接器标志(因为其他项目依赖项,而不是我的)。
我试图为以下三种情况提出一个简单的解决方案:
1)项目包含我的静态库,不使用可选类,不指定 -ObjC 标志
2)项目包含我的静态库,不使用可选类,但需要 -ObjC 标志
3) 项目包括我的静态库 + 第二个静态库,并且确实使用可选类(此时我们不关心 -ObjC 标志)
是否有一个链接器标志可以将我的可选类从最终项目应用程序中剥离出来,以便它不需要第二个静态库?我想我的其他选择是发布我的静态库的多个版本,一个包含选项类(标准选择),一个不包含选项类(替代,用于具有 -ObjC 要求的项目),或者可能提供一个存根文件,提供第二个静态库所需的所有类的空实现?这似乎是静态库世界中的一个常见问题......这种情况有最佳实践吗?
谢谢!
解决方案:
1) 建议我的 -ObjC 用户改用 -force_load。(感谢 Rob!)
2)对于不能做 1 的用户,我将有一个不包括 ClassA 的替代版本