IOS разрыв вложенного цикла - PullRequest
12 голосов
/ 23 февраля 2012

Если у меня есть цикл while с циклом for внутри цикла while, как я могу break оба цикла?

Я делаюэто потому, что дополнительные 250 мс, которые я получаю, не завершив эти циклы после того, как я обнаружил, что то, что я хочу, складываются, будут ценными через некоторое время.

Ответы [ 2 ]

28 голосов
/ 23 февраля 2012

Здесь 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;
        }
    }
}
4 голосов
/ 23 февраля 2012

Это один из способов.Это применимый метод для других вариантов языка Си, а также для других языков.

bool breakOuterLoop = false;
while(!breakOuterLoop)
{
    for(NSArray *arr in twoThousandItems)
    {
        if(IFoundWhatIWasLookingFor)
        {
            // assign some stuff here
            breakOuterLoop = true;
            break;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...