How can I break out of two nested for loops in Objective-C? How can I break out of two nested for loops in Objective-C? c c

How can I break out of two nested for loops in Objective-C?


If using goto simplifies the code, then it would be appropriate.

for (;;) {    for (;;)     {        break; /* breaks inner loop */    }     for (;;)     {        goto outer; /* breaks outer loop */    }} outer:;


break breaks out of one loop, but you can add a check to the outer loop which breaks when the inner breaks.

bool dobreak = false;for ( ..; !dobreak && ..; .. ) {   for ( ... ) {      if (...) {         dobreak = true;         break;      }   }}


The break statement only gets you out of the innermost loop. If you don't want the added overhead in code, memory and performance of a dedicated state variable, I recommend refactoring the code out into a function or method of its own, and using return to get out of all the loops:

void do_lots_of_work(void){  int i, j;  for(i=0; i<10 ; i++)  {    for(j=0;j< 10; j++)    {     ..     ..     if(disaster_struck())      return; /* Gets us out of the loops, and the function too. */    }  }}