0

在我的 IF 语句中,它有点奇怪,因为每次我的代码在其中循环时,只有 SLOT1 被调用并显示在我的调试器中,为什么会这样?我的陈述有问题吗?谢谢。

    choiceSlot1 = TRUE;
    choiceSlot2 = TRUE;
    choiceSlot3 = TRUE;
    choiceSlot4 = TRUE;   

    if (slot1 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot1 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot1 ) {

        NSLog(@"Slot1");
        choiceSlot1 = FALSE;

    } 
    else if (slot2 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot2 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot2) {

        NSLog(@"Slot2");
        choiceSlot2 = FALSE;


    }
    else if (slot3 != [carousel1 indexOfItemViewOrSubview:carousel1.superview] || twoSlot3 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot3) {

        NSLog(@"Slot3");
        choiceSlot3 = FALSE;


    }
    else if (slot4 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot4 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot4) {

        NSLog(@"Slot4");
        choiceSlot4 = FALSE;

    }
4

2 回答 2

1

因为只有在第一个语句是else if的情况下才有效。iffalse

例子:

if (true) 
{
    // Will be executed
} 
else if (true) 
{
    // Will not be executed
}

if (false) 
{
    // Will not be executed
} 
else if (true) 
{
    // Will be executed
}
于 2012-06-27T07:50:41.007 回答
1

这简单,

 if (slot1 != [(UIImageView*)[self.carousel1 currentItemView] tag] || twoSlot1 != [(UIImageView*)[self.carousel2 currentItemView] tag] || choiceSlot1 ) 

如果choiceSlot1 为TRUE,则第一个语句将始终为真(使用OR,如果其中一个元素为真,则为真)。

当第一个语句为真时,其余的 else/if 不会被调用!

于 2012-06-27T07:50:52.417 回答