我有一个Xcode项目有三个不同的目标(比如足球,棒球,篮球),导致三个不同的应用程序。大多数代码都是相同的,但有时它是针对特定目标的。
实现特定于目标的方法的最佳方法是什么?我想避免
if ([AppDelegate isSoccerTarget] {
...
} else if () {
...
} else if () {
...
}
我在考虑使用仅存在于三个目标之一中的类别,但我不能使用默认实现。我想避免继承,因为有些类已经在类层次结构中了,我想保持简单(避免person =>播放器,管理器导致soccerPlayer,basketballPlayer等)。
你这样做的方式是什么?
答案 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”语句,编译器可以使用该语句查看每个目标使用的代码。