2

我有一个 Xcode 项目,其中包含三个不同的目标(例如足球、棒球、篮球),从而产生了三个不同的应用程序。大多数代码是相同的,但有时它是特定于目标的。

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

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

我正在考虑使用仅存在于三个目标之一中的类别,但是我不能使用默认实现。而且我想避免继承,因为某些类已经在类层次结构中,并且我想保持简单(避免人员 => 球员、经理导致足球运动员、篮球运动员等)。

你这样做的方法是什么?

4

2 回答 2

7

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

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

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

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

这样我只需要实例化一个 Player 类一次,根据我的目标,它会自动创建正确的类。希望这可以帮助。

于 2013-01-03T04:21:37.440 回答
3

您将在 Xcode 项目窗格(最顶部的文件)中创建目标,然后在每个目标的其中一个选项卡中(我忘记是哪个选项卡)在预处理器宏中添加一些值(可能是预编译器宏) . 然后,在您的代码中,您可以这样做:假设棒球目标的预处理器宏称为 BASEBALL,而足球则称为 SOCCER。您的代码如下所示:

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

这些可以在任何可以使用普通代码的地方使用。把它想象成一个'switch'语句,编译器可以使用它来查看每个目标使用什么代码。

于 2013-01-03T04:42:57.003 回答