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 の場合、最初のステートメントは常に true になります (OR を使用すると、要素の 1 つが true の場合に true になります)。

最初のステートメントが true の場合、else/if の残りは呼び出されません!

于 2012-06-27T07:50:52.417 に答える