ios打破嵌套循环

时间:2012-02-23 18:28:56

标签: objective-c

如果我在while循环的内有for循环while循环,我怎样才能break两个循环?< / p>

我这样做是因为在我找到我想要的东西之后,因为没有完成这些循环而得到的额外250毫秒在一段时间后就会变得有价值。

伪代码:

while(alwaysTrue) {
    for(NSArray *arr in twoThousandItems) {
        if(IFoundWhatIWasLookingFor) {
            // assign some stuff here
            // break everything, not just the for loop.
        }
    }
}

2 个答案:

答案 0 :(得分:28)

这是goto是你的朋友的地方。是的,那是goto

while(alwaysTrue) {
    for(NSArray *arr in twoThousandItems) {
        if(IFoundWhatIWasLookingFor) {
            // assign some stuff here
            // break everything, not just the for loop.
            goto BAIL;
        }
    }
}
BAIL:
NSLog(@"Freedom!");

另一种选择是在循环中出现短路。

while(alwaysTrue && !found) {
    for(NSArray *arr in twoThousandItems) {
        if(IFoundWhatIWasLookingFor) {
            // assign some stuff here
            // break everything, not just the for loop.
            found = YES;
            break;
        }
    }
}

答案 1 :(得分:4)

这是一种方式。这是适用于其他C变体和其他语言的技术。

bool breakOuterLoop = false;
while(!breakOuterLoop)
{
    for(NSArray *arr in twoThousandItems)
    {
        if(IFoundWhatIWasLookingFor)
        {
            // assign some stuff here
            breakOuterLoop = true;
            break;
        }
    }
}