1

好的,我有一个使用相机的 iPhone 项目。

我正在尝试为该项目的 iPad 版本使用 80% 的相同代码,但是,我必须更改一些值,因为后一种设备中的相机质量与我用作第一个设备的标准的一些参数相混淆.

所以我所做的是:我复制了 iPhone 项目,并且在同一个项目中总共有两个目标,第一个用于 iPhone(原版),第二个用于 iPad。

当我单击第二个目标并在某个 .m 文件上添加评论时,相同的评论也出现在 iPhone 版本文件的同一个 .m 文件中。

我不想要那样——如你所见,我想要分离。我想以iPhone项目为基础修改iPad项目的代码。但是我该怎么做呢?如果评论也出现在 iPhone .m 中,那么显然这意味着没有区别,而且我在 iPad .m 中所做的任何事情都会弄乱另一个 .m 吗?

4

5 回答 5

3

看起来您的两个项目正在共享相同的文件。如果您想将它们分开,只需复制源文件并将它们单独添加回项目。

于 2012-12-29T22:51:06.087 回答
1

我会创建一个通用应用程序。这样,您可以在单个项目中的两个设备之间共享所有代码。然后,您可以简单地将每种设备类型的逻辑分离到不同的文件中。因此,例如,ViewControllerA对于这两个设备,ViewControllerA_iPhone以及ViewControllerA_iPad对于每个单独的设备。

于 2012-12-29T22:50:54.993 回答
1

可能重复: ipad 和 iphone 之间的条件编译

我认为您不需要第二个实现文件,您只需要针对不同的设备进行编译或检查您在运行时使用的设备并进行相应的调整。

于 2012-12-29T22:51:40.660 回答
1

我认为不需要复制整个项目。您可以只复制必要的文件并为 iPhone 和 iPad 创建逻辑组。如果是 iPad,则将设备类型检查到 appdelegate 类中,然后调用 iPad 相关类,否则为 iPhone。希望它会帮助你。

于 2012-12-29T23:35:04.950 回答
0

在我看来,您需要“扩展”原始功能以合并新功能。

创建“接口”然后创建类的基本形式(可能使其抽象)不是最简单的吗,它实现了所有方法,但留下了那些可能有特殊需求的方法(只是让它们作为基本方法抛出错误功能)

然后对于 2 个项目,您可以扩展抽象类并覆盖添加所需功能的方法。

美妙之处在于,如果在覆盖的方法中有错误条件,您可以调用“超类”抽象方法并抛出错误消息,您可以决定超类方法应该采用字符串输入变量以使您能够使用一条自定义消息标记在抽象类的末尾。

大卫

于 2012-12-29T22:57:12.623 回答