2013-08-30 53 views
3

首先我想说我对这个主题很新,所以我对它的工作方式的一些一般方面有些困惑。 基本上我正在开发一个iOS项目,它有两个目标,一个是我正在开发的应用程序本身,它是一个前端iOS客户端,一个是前开发人员用来定义属于一个后端框架。作为子项目添加的静态库vs作为目标添加的静态库

应用程序本身(我正在处理的客户端)和静态库(后端框架)的文件都在同一个xcode项目包中。 即使我从来没有做过静态库的“设置过程”,任何东西在编译时似乎都能正常工作。

现在的问题是:我正在设置单元测试,因为我想开始开发采用测试驱动开发方法的新功能,所以我一直在努力的事情之一是如果我必须生成或不生成两个独立的测试目标,一个用于iOS应用程序,一个用于静态库(因为它们是两个独立的目标),矿石对静态库和iOS应用程序都使用一个测试目标。 因此,阅读互联网寻找解决方案,我发现,即使苹果建议here,一种常见的方法是将静态库添加为应用程序项目的“子项目”。

我只是问自己为什么和我目前的情况有什么不同(一个项目,目标,其中之一是静态库)。有什么缺点吗?我应该重组整个项目吗?

回答

1

我的经验与苹果公司和常见方法一致。我建议把框架作为一个子项目。 (我在查找标题时遇到了一些问题,但这是我对Xcode的掌握不足,而不是这个过程中的缺陷。)

独立设置每个项目的单元测试。通过这种方式,您的测试对框架的目标是真实的:您已经成功地将框架从父项目中分离出来了。

如果你在父项目中编写所有的单元测试,当另一个项目需要框架时会发生什么?你有两个选择。您无法测试框架,或者沿着原始父级测试字符串。做正确的事情并分解你的测试。

我有一个我建立的开源框架,名为SpiffyKit,它有一个名为SpiffyTester的父项目。 (我承认没有单元测试太多,因为这全都是用户界面,没有逻辑。)它可以作为一个起点的好例子。

+0

好吧,我同意你的解耦问题,但我的问题点有点不同,我想知道为什么与一个子项目的解耦,而不是与不同的目标,每个与不同的文件链接的目标。 我想知道为什么一个比另一个更好,因为我发现通过一个子项目添加一些东西有点棘手,它只是一个概念性的东西,例如:“你可能希望将该库添加到另一个项目中,所以它应该生活在一个单独的项目中“或者还有其他与我不是软件包的维护和分发过程相关的问题? –

+0

我认为这两个都是有效的原因。您可能需要将该库添加到另一个项目中,或者您可能希望共享该库而不共享其余代码。 Cocoa项目的原子单元是Xcode项目。出于所有提到的理由,坚持该单位是一个好主意。 – Moshe

-2

根据您的需求,您可以使用Pods,静态或将其添加到项目中。如果您在一次处理2个项目时将库添加为“子项目”非常有用。例如,如果您向库中添加了新的东西,那么您只需编译该库,并且您可以访问项目中的新库。但是,如果你只是链接静态库,你将不得不打开库的项目,然后建立,然后在库中替换它,并添加新的头文件是很多安装工作。

+0

CocoaPods在这里不合适。 – Moshe

+0

既然他在问这个问题,我认为他应该知道所有的方法来为项目添加库/代码,从而获得额外的知识,并且有一点从来没有人想过。 – Radu

+0

我已经知道可可豆荚了,有时候我在一些项目中使用过它,但情况并非如此。这会增加额外的复杂性,我将添加到我的项目sonsists的库中,我们仍在编写代码并经常更新,代码应该已经准备好并且可以编辑,我们应该能够快速测试它。 –

相关问题