Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 作为子项目添加的静态库与作为目标添加的静态库_Ios_Objective C_Xcode_Static Libraries_Ocunit - Fatal编程技术网

Ios 作为子项目添加的静态库与作为目标添加的静态库

Ios 作为子项目添加的静态库与作为目标添加的静态库,ios,objective-c,xcode,static-libraries,ocunit,Ios,Objective C,Xcode,Static Libraries,Ocunit,首先,我想说的是,我对这个话题还很陌生,所以我对它的工作原理有点困惑。 基本上我正在做一个iOS项目,它有两个目标,一个是我正在开发的应用程序本身,它是一个前端iOS客户端,一个是一个静态库,前开发人员用来定义属于后端框架的类 应用程序本身(我正在处理的客户端)和静态库(后端框架)的文件都在同一个xcode项目包中。 即使我从未完成过静态库的“设置过程”,但在编译过程中似乎任何东西都可以正常工作 现在的问题是:我正在设置单元测试,因为我想开始采用测试驱动的开发方法开发新功能,所以我一直在努力的一

首先,我想说的是,我对这个话题还很陌生,所以我对它的工作原理有点困惑。 基本上我正在做一个iOS项目,它有两个目标,一个是我正在开发的应用程序本身,它是一个前端iOS客户端,一个是一个静态库,前开发人员用来定义属于后端框架的类

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

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


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

根据您的需要,您可以使用静态或将其添加到项目中。如果将库添加为“子项目”,则在同时处理这两个项目时非常有用。例如,如果您向库中添加了一些新的内容,您只需编译库,瞧,您就可以访问项目中的新库。然而,如果你只是链接静态库,你将不得不打开库的项目,然后构建,然后在库中替换它,并添加新的标题,这是大量的设置工作。

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

独立地为每个项目设置单元测试。这样,您的测试就实现了框架的目标:您已经成功地将框架与父项目完全解耦

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


我构建了一个开源框架,名为SpiffyTester,它有一个父项目。(无可否认,我没有进行过太多的单元测试,因为它都是UI,没有逻辑。)这可能是一个很好的例子。

可可豆在这里是不合适的。既然他在问这个问题,我认为他应该知道所有的方法来增加图书馆/代码来获得额外的知识和一点也不介意任何人。我已经知道可可豆荚,有时我在我的一些项目中使用过它。但事实并非如此。这将增加额外的复杂性,我正在添加到我的项目中的库包含了我们仍在研究并经常更新的代码,代码应该准备好并可编辑,我们应该能够快速测试。好吧,我同意你关于解耦的观点,但我问题的重点略有不同,我想知道为什么要与子项目脱钩,而不是与不同的目标脱钩,每个目标都有不同的文件链接。我想知道为什么一个比另一个好,因为我发现通过子项目添加东西有点棘手,这只是一个概念性的东西,比如:“有一天你可能也想将这个库添加到另一个项目中,所以它应该有一个单独的项目来生活”或者还有其他与捆绑包维护和分发过程相关的问题我不知道?我认为这两个都是合理的原因。您可能希望将该库添加到另一个项目中,或者希望共享该库而不共享其余代码。Cocoa项目的原子单元是Xcode项目。出于上述所有原因,坚持使用该单元是个好主意。