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

时间:2012-05-01 02:46:55

标签: ios xcode linker

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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