7

我有 4 个类似的 iOS 应用程序。它们是闪存卡应用程序,每个应用程序都有不同的主题。他们共享很多类和图像。现在我将它们全部 4 作为单独的项目,但我希望简化维护和共享资源。将所有 4 个项目放在同一个工作区中,还是在一个项目中有 4 个目标会更好?每种方法有哪些优点/缺点?它们看起来非常相似。

4

2 回答 2

8

这是 Marty 发布的 PDF 的摘录。这是一个很棒的文档,但是 4.4MB 并且可能会在很多人下载后下线;)

将多个目标放在一个项目中的权衡

通过考虑所涉及的一些权衡,您可以帮助确定是否将多个或所有目标放在一个项目中。以下是在一个项目中组合多个目标的一些优点:

  • 索引适用于所有目标。需要索引信息才能访问类浏览器中的类、查看项目符号智能组中的符号以及充分利用代码完成功能。还需要使用 Command–双击来跳转到定义并使用符号对应项。

  • 您可以轻松地设置项目中目标之间的依赖关系。

  • 使用该项目的任何人都可以访问其所有文件。

  • 如果您的计算机有多个 CPU,或者您可以访问网络上的其他计算机,则可以使用并行构建或分布式构建来缩短大型项目的构建时间。有关详细信息,请参阅 Xcode 项目管理指南和减少构建时间中的“并行构建”。

以下是将所有目标放在一个项目中的一些缺点:

  • 使用该项目的任何个人或团队都可以看到所有代码,即使他们只处理一个目标或整个项目的一小部分。

  • 项目规模可能会变得笨重;这可能会导致 Xcode 花费很长时间来执行索引等操作。

  • 所有目标必须使用相同的 SCM 系统。

  • 所有目标都必须使用相同的 SDK 构建。

  • 您不能使用 Xcode 调试器同时调试一个项目中的两个可执行文件。

使用多个项目的权衡

将软件产品分解为多个项目和目标也需要权衡取舍。以下是使用多个项目的一些优点:

  • 您可以将项目用作在不同个人或团队之间分配工作的单位。单独的项目允许您隔离代码(例如,限制对机密信息的访问)。

  • 每个项目的大小可以更易于管理,Xcode 可以更快地执行索引、构建和其他操作。

  • 如果项目需要共享输出,它们可以构建到一个公共目录中,如 Xcode 项目管理指南中的“构建位置”中所述。

  • 您可以使用跨项目引用来构建当前项目所需的其他项目。

  • 每个项目都可以使用存储在不同 SCM 系统中的源代码。但是,如果个人可以物理访问其他项目,仍然可以查看来自使用相同 SCM 系统的多个项目的 SCM 信息。

  • 每个项目可以使用不同的 SDK。

  • 每个项目都可以定义一个单独的构建配置列表。

  • 您可以使用调试器同时调试两个或多个可执行文件,每个项目中一个。当产品直接通信或以其他方式交互时,这很有用。

以下是拥有多个项目和目标的一些缺点:

  • 您没有跨项目索引,因此您只能访问其他项目专门公开的符号。这意味着,例如,您不能在其他项目中自动查找定义,除非您可以物理访问它们(不仅仅是访问它们的最终产品)。同样,您不能充分利用依赖于索引的其他功能。这包括使用代码完成、使用 Command-双击跳转到定义、重构和使用符号对应项。

  • 许多较小项目的管理可能会产生额外的开销。例如,要在多个项目中设置一个依赖于其他目标的目标,您必须首先设置跨项目引用。

    同样,使用多个项目可能需要团队之间进行额外的沟通。

  • 对于从事多个项目的个人来说,在多个打开的项目之间切换可能会变得笨拙。然而,这个问题可以通过使用 Organizer 得到缓解(有关详细信息,请参阅使用 Organizer)。

  • 单个项目较小,不太可能利用分布式构建。

于 2014-09-05T09:35:13.227 回答
0

终于找到了我在这里寻找的文件:http: //hoangtuanonline.com/mad/iPhone%20documents/iphone%20devdocs/Xcode_Workspace.pdf

具体来说,从第 29 页开始有一节列出了每种方法的优缺点。

于 2012-07-25T03:04:23.967 回答