iOS:如何针对不同的目标进行开发
我有一个Xcode项目,有三个不同的目标(比如足球、棒球、篮球),产生了三个不同的应用程序。大多数代码都是相同的,但有时是特定于目标的 实现特定于目标的方法的最佳方式是什么?我想避免iOS:如何针对不同的目标进行开发,ios,xcode,targets,Ios,Xcode,Targets,我有一个Xcode项目,有三个不同的目标(比如足球、棒球、篮球),产生了三个不同的应用程序。大多数代码都是相同的,但有时是特定于目标的 实现特定于目标的方法的最佳方式是什么?我想避免 if ([AppDelegate isSoccerTarget] { ... } else if () { ... } else if () { ... } 我曾考虑使用仅存在于三个目标之一的类别,但我不能使用默认实现。我希望避免继承,因为有些类已经在类层次结构中,我希望保持简单(避免perso
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允许您在左侧的项目浏览器中手动分组。在这一点上,这只是一个你认为最好的分组方式的偏好问题。