iOS:如何针对不同的目标进行开发

时间:2013-01-03 04:11:04

标签: ios xcode targets

我有一个Xcode项目有三个不同的目标(比如足球,棒球,篮球),导致三个不同的应用程序。大多数代码都是相同的,但有时它是针对特定目标的。

实现特定于目标的方法的最佳方法是什么?我想避免

if ([AppDelegate isSoccerTarget] {
   ...
} else if () {
   ...
} else if () {
   ...
}

我在考虑使用仅存在于三个目标之一中的类别,但我不能使用默认实现。我想避免继承,因为有些类已经在类层次结构中了,我想保持简单(避免person =>播放器,管理器导致soccerPlayer,basketballPlayer等)。

你这样做的方式是什么?

2 个答案:

答案 0 :(得分:7)

我处理它的方式是在超级类中放置任何类似的东西,添加到所有目标,然后我创建一个新类(对于你的例子“Player”),每个目标都不同。

所以在源目录中我会有子目录和文件:

篮球/ Player.m  棒球/ Player.m  ...

然后我会选择篮球/ Player.m的“目标会员”作为“篮球”目标。

这样我只需要实例化一次Player类,并根据我的目标是什么,它会自动创建正确的类。希望这会有所帮助。

答案 1 :(得分:3)

您可以在Xcode项目窗格(最顶层的文件)中创建目标,然后在每个目标中的一个选项卡中(我忘记哪一个)在预处理器宏中添加一些值< / strong>(可能是预编译器宏)。然后,在你的代码中,你可以这样做:说棒球目标的预处理器宏叫做BASEBALL,足球就是SOCCER。你的代码看起来像这样:

...blablablaothercode...
#ifdef BASEBALL
      NSLog(@"Baseball!");
#endif
#ifdef SOCCER
      NSLog(@"Soccer!");
#endif
...blablablaothercode...

这些可以在任何可以使用普通代码的地方使用。可以将其视为“switch”语句,编译器可以使用该语句查看每个目标使用的代码。