静态库作为子项目添加为静态库添加为目标

时间:2013-08-30 13:22:54

标签: ios objective-c xcode static-libraries ocunit

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我的经验与Apple和通用方法一致。我建议将框架作为子项目。 (我在查找标题时遇到了一些问题,但这是我对Xcode的缺乏掌握,而不是过程中的缺陷。)

独立设置每个项目的单元测试。这样,您的测试就符合您的框架目标:您已经成功地将框架与父项目完全分离。

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

我有一个我构建的开源框架,名为SpiffyKit,它有一个名为SpiffyTester的父项目。 (我确实没有进行过单元测试,因为它只是用户界面,没有逻辑。)它可以作为起点的一个很好的例子。

答案 1 :(得分:-2)

根据您的需要,您可以使用Pods,静态或将其添加到项目中。如果将库添加为“子项目”,则在同时处理2个项目时非常有用。例如,如果您向库中添加新内容,则只需编译库,即可在项目中访问新库。但是,如果您只是链接静态库,则必须打开库的项目然后构建然后在库中替换它并添加新的头文件,这是很多设置工作。