iOS库/框架,如何从构建产品中排除特定的类?

我正在尝试构建一个iOS库/框架,为了简单起见,我们会说将一些A类公开给使用它的项目.现在的问题是A类依赖于B类,而B类并不打算在库的构建输出中公开(或者甚至包含在符号中).这会导致问题,因为还有另一个带有C类的库,它也恰好依赖于B类.

如果我尝试在项目中包含两个库,那么会发生什么事情,链接器抱怨有多个B类定义.

解决此问题的最佳方法是什么?在构建两个库(或两个库中的至少一个库)时,是否可以将类B设置为弱链接,如果是,如何?

或者应该将B类提取到自己的库/框架中,并修改两个库以引用它而不是将B类作为源文件包含在内?

最佳答案 我认为最好的方法是在项目中制作多个目标.最简单的方法是在XCode左侧的文件列表中单击项目文件,右键单击中间窗格中“TARGETS”下的对象,然后选择Duplicate.然后,您可以在一个目标中包含A和C,在另一个目标中包含B和C.你可以单独编译它们,它基本上就像有两个项目,除了它们共享公共文件.这听起来像你想要的吗?

编辑第二个想法,它听起来不像.当您编译到库,然后将另一个项目链接到它时,您的问题正在发生,对吧?

似乎没有办法在编译库中包含弱链接对象.您可能最好将它们拆分为单独的库(这类似于this page底部描述的场景)

点赞