Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:如何针对不同的目标进行开发_Ios_Xcode_Targets - Fatal编程技术网

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

iOS:如何针对不同的目标进行开发,ios,xcode,targets,Ios,Xcode,Targets,我有一个Xcode项目,有三个不同的目标(比如足球、棒球、篮球),产生了三个不同的应用程序。大多数代码都是相同的,但有时是特定于目标的 实现特定于目标的方法的最佳方式是什么?我想避免 if ([AppDelegate isSoccerTarget] { ... } else if () { ... } else if () { ... } 我曾考虑使用仅存在于三个目标之一的类别,但我不能使用默认实现。我希望避免继承,因为有些类已经在类层次结构中,我希望保持简单(避免perso

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

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

if ([AppDelegate isSoccerTarget] {
   ...
} else if () {
   ...
} else if () {
   ...
}
我曾考虑使用仅存在于三个目标之一的类别,但我不能使用默认实现。我希望避免继承,因为有些类已经在类层次结构中,我希望保持简单(避免person=>player、manager导致soccerPlayer、basketballPlayer等)


你是怎么做的?

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

因此,在源目录中,我将有子目录和文件:

篮球运动员 棒球运动员

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


这样,我只需实例化一个Player类,根据我的目标是什么,它将自动创建适当的类。希望这有帮助。

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

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

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

听起来不错!唯一的问题是:有没有一种简单的方法可以找出哪些类是特定于目标的?我的意思是:如果添加了一个新的目标,您如何轻松地知道必须实现哪些类和方法?或者有没有一种简单的方法来实现这一点?我将每个特定于目标的类放入与该目标相关联的组中。我不知道有没有一种自动的方法,但是Xcode允许您在左侧的项目浏览器中手动分组。在这一点上,这只是一个你认为最好的分组方式的偏好问题。