6

我的问题是:我有一个为 iPhone 设计的应用程序,我决定分叉代码,换句话说,我将在初始阶段开发两个版本的应用程序,一个用于 iPhone,另一个用于 iPad。

我的问题是:我如何分叉代码?我想继续为这两个版本使用一个项目,但显然,我将不得不为 iPhone 编写代码部分,而其他部分则专门为 iPad 编写,当然,这两个版本都有许多共同点。

如何在不造成代码混乱的情况下做到这一点?

最佳实践是什么?谢谢你的帮助。

4

4 回答 4

3

您可以将 XCode 项目配置为使用多个目标,然后您可以将一些源代码文件分配给一个目标或另一个目标或两者

于 2010-02-21T15:49:22.437 回答
2

多个目标的问题是它可能与分布模型冲突。

据我了解,iPad 和 iPhone 应用程序将作为单个二进制文件分发。应用程序已决定是否在运行时显示 iPad 或 iPod 用户界面。

这意味着,如果您不想在商店中分离应用程序“Foo”和“Foo iPad Edition”,则您不能使用多个目标,并且您必须以某种方式使用一个代码库。

我有点讨厌这个,因为应用程序中可能有很多有条件的东西。如果 iPad 则执行此操作,否则执行此操作。如果 iPhone 则显示此视图控制器,否则显示另一个。我不认为这会导致很好的代码。

所以我目前正在考虑的是在中间做一些事情:我将创建基本上两个代码库,并且在应用程序的早期某个地方我将决定采用完整的 iPad 或 iPhone 代码路径。

于 2010-02-21T17:42:41.057 回答
1

我不是 iPhone 开发人员,但根据 St3fan 的指示(它必须作为单个二进制文件分发),这些似乎是工厂模式的经典案例。任何不同的东西都以两种不同的方式(使用通用接口)实现,工厂根据它是在 iPhone 还是 iPad 上吐出不同的实现。公共代码不需要更改,因此可以保持原样。

于 2010-02-21T18:12:45.280 回答
1

我回复你的观点:1)“我如何做那个任务”你必须从项目菜单中创建一个新目标在我的情况下我为 iPhone 游戏使用两个不同的目标(普通版和免费(精简版)版本)

  so I created a second Target of Type Application
  this will add a Target to the Groups & Files panel
  and will create a new Info.plist file

  in the Group&File you can show more columns (by right clicking)
  on "Group&Files"), here you have to show the "Target Memebership column"
  for each file you can decide if it is part of a target by pressing the
  corresponding check box

2)“部分代码呢”我不知道当前用于开发 iPad 应用程序的 Beta SDK 是否包含一些您可以在编译期间测试的#define,在每种情况下您都可以在目标级别设置一些专用的#define 并对其进行测试做一些条件编译

您可以在专用的苹果文档中找到有关构建具有多个目标的应用程序的非常详细的信息您可以从 iPhone 开发中心下载它您需要阅读本指南“Xcode 项目管理指南”

于 2010-02-22T19:13:21.573 回答