Objective c 最小化重复代码?

Objective c 最小化重复代码?,objective-c,ios,optimization,repeat,Objective C,Ios,Optimization,Repeat,我试图在目标C中做一个简单的检查,如下所示: if ((spriteA.tag == 4 && spriteB.tag == 10)) { } 但是,我正在尝试完成1if检查,同时实现以下目标: if ((spriteA.tag == 4 && spriteB.tag == 10,11,12,13,14,15,16,17)) { } 现在我知道我可以使用|操作符,但如果检查多行代码,使其看起来难以辨认,则会使1。现在有没有什么有组织的方式来实现我想要做的事情

我试图在目标C中做一个简单的检查,如下所示:

if ((spriteA.tag == 4 && spriteB.tag == 10)) {
}
但是,我正在尝试完成1
if
检查,同时实现以下目标:

if ((spriteA.tag == 4 && spriteB.tag == 10,11,12,13,14,15,16,17)) {
}
现在我知道我可以使用
|
操作符,但如果
检查多行代码,使其看起来难以辨认,则会使1
。现在有没有什么有组织的方式来实现我想要做的事情


谢谢

最简单的方法可能是使用类似枚举的值制作一个位掩码
int-spriteBtags=(1),一个
开关
语句可能有用:

switch(spriteB.tag) {
case 4:
case 10:
case 12:
case 17:
case 42:
    ...
    break;
}

spriteA.tag==4&&spriteB.tag>=10&&spriteB.tag我最喜欢@danieldischer方法(我不知道你能这么做),因为它不需要使用更多的代码行(创建nsset)但是,它与构成一个范围的允许值相关联。如果情况并非总是如此,那么就应该使用集合。更具体地说,如果您选择该路线,您可能希望查看
NSIndexSet
。同样,如果您编写一个描述测试含义的命名方法或函数,它的可读性会更高。类似于
 如果(spriteswerprocessed(spriteA.tag,spriteB.tag)){…}
然后
BOOL-spriteswerprocessed(int-tagA,int-tagB){BOOL-tagA-processed=(tagA==kPassedTest);BOOL-tagB-processed=(tagB>=kTestMin&&tagB