我有4个iOS应用程序都很相似。它们是闪存卡应用程序,每个应用程序都有不同的主题。他们分享了很多课程和图像。现在我将其中的所有4个作为单独的项目,但我希望简化维护和共享资源。将所有4个项目放在同一个工作区中,或者在一个项目中有4个目标会更好吗?每种方法的优点/缺点是什么?它们看起来很相似。
答案 0 :(得分:3)
这是Marty发布的PDF的摘录。这是一个很好的文档,但4.4MB,很可能会在很多人下载后离线;)
在一个项目中投放多个目标的权衡
通过考虑所涉及的一些权衡,您可以帮助确定是否将许多或所有目标放在一个项目中。以下是在一个项目中组合多个目标的一些优点:
索引适用于所有目标。访问类浏览器中的类,查看Project Symbols智能组中的符号以及充分利用代码完成性需要索引信息。还需要使用Command双击来跳转到定义并使用符号对应项。
您可以轻松设置项目中目标之间的依赖关系。
使用该项目的任何人都可以访问其所有文件。
如果您的计算机有多个CPU,或者您可以访问网络上的其他计算机,则可以使用并行构建或分布式构建来缩短大型项目的构建时间。有关详细信息,请参阅“Xcode项目管理指南”中的“并行构建”和“缩短构建时间”。
以下是将所有目标放在一个项目中的一些缺点:
使用该项目的任何个人或团队都可以看到所有代码,即使他们只处理一个目标或整个项目的一小部分。
项目规模可能变得笨重;这可能导致Xcode花费很长时间来执行索引等操作。
所有目标必须使用相同的SCM系统。
所有目标都必须使用相同的SDK构建。
您无法使用Xcode调试器同时调试一个项目中的两个可执行文件。
使用多个项目的权衡
将软件产品分解为多个项目和目标也存在权衡取舍。以下是使用多个项目的一些优点:
您可以将项目用作分隔不同个人或团队之间工作的单位。单独的项目允许您隔离代码(例如,限制对机密信息的访问)。
每个项目的大小都可以更易管理,Xcode可以更快地执行索引,构建和其他操作。
如果项目需要共享输出,它们可以构建到一个公共目录中,如" Build Locations"在Xcode项目管理指南中。
您可以使用跨项目引用来构建当前项目所需的其他项目。
每个项目都可以使用存储在不同SCM系统中的源代码。但是,如果个人可以物理访问其他项目,则仍可以查看来自使用相同SCM系统的多个项目的SCM信息。
每个项目都可以使用不同的SDK。
每个项目都可以定义一个单独的构建配置列表。
您可以使用调试器同时调试两个或多个可执行文件,每个项目一个。当产品直接沟通或以其他方式进行交互时,这非常有用。
以下是拥有多个项目和目标的一些缺点:
您没有跨项目索引,因此您只能访问其他项目专门公开的符号。例如,这意味着您无法在其他项目中自动查找定义,除非您具有物理访问权限(不仅仅是对其最终产品)。同样,您无法充分利用依赖于索引的其他功能。这包括使用代码完成,使用Command双击跳转到定义,重构和使用符号对应物。
许多小型项目的管理可能会产生额外的开销。例如,要设置依赖于多个项目中其他目标的目标,必须首先设置跨项目引用。
同样,使用多个项目可能需要团队之间进行额外的沟通。
对于从事多个项目的人员,在许多打开的项目之间切换可能会变得难以处理。但是,使用管理器可以缓解此问题(有关详细信息,请参阅使用管理器)。
单个项目规模较小,不太可能利用分布式构建。
答案 1 :(得分:0)
最后找到了我正在寻找的文件:http://hoangtuanonline.com/mad/iPhone%20documents/iphone%20devdocs/Xcode_Workspace.pdf
具体来说,有一节从第29页开始,列出了每种方法的优缺点。