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

标签 ios objective-c xcode static-libraries ocunit

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

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

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

我只是在问自己为什么,和我现在的情况有什么区别(一个项目,to targets,其中之一就是静态库)。有什么缺点吗?我应该重新组织整个项目吗?

最佳答案

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

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

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

我有一个我构建的开源框架,名为 SpiffyKit ,它有一个名为 SpiffyTester 的父项目。 (我承认我没有进行太多单元测试,因为它全是 UI 而没有逻辑。)它可以作为一个很好的起点示例。

关于ios - 作为子项目添加的静态库与作为目标添加的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18534012/

相关文章:

ios - (Swift) 将数组存储和检索到 NSUserDefaults

ios - 为什么导航 View Controller 返回零 View Controller ?

ios - 椰子足 : Why Xcode build process try to find the library which has been already removed from my project

objective-c - 在 GCDAsyncSocket 上设置匿名密码

iphone - 如何更改标签栏 Controller 项目名称的字体大小?

ios - "Image Literal"命令在 Xcode 中不起作用

ios - 如何使用 OneSignal 发送自定义声音推送通知?

ios - Cocos2d 2.x : messed up with circular references in my game hierarchy even if I am using ARC enabled code

ios - unwind segue 后设置方向

ios - CFBundleDisplayName 在 xCode 中的位置