2015-02-13 1 views
2

Если у меня есть блок внутри блока внутри блока и т. Д., Как бы я «остановил» выполнение каких-либо дополнительных блоков.Вырыв из вложенных блоков Objective-C

void (^simpleBlock)(void) = ^{ 
    //block A 
    void (^simpleBlock)(void) = ^{ 
     //block B 

     //something happened, stop block C from executing... 

     void (^simpleBlock)(void) = ^{ 
      //block C 
     }; 
    }; 
}; 

ответ

3

Если вы хотите прекратить выполнение самого блока, вы можете просто вернуться из блока, как это:

void (^simpleBlock)(void) = ^{ 
    //block B 

    //something happened, stop block C from executing... 
    return; 

    void (^simpleBlock)(void) = ^{ 
     //block C 
    }; 
}; 

Если блок С уже работает, и вы хотите, чтобы это знайте, что он должен выйти как можно скорее, вы можете сделать это:

// Set up a flag that is shared among all blocks 
__block BOOL blockCShouldStop = NO; 
void (^simpleBlock)(void) = ^{ 
    //block A 
    void (^simpleBlock)(void) = ^{ 
     //block B 

     //something happened, stop block C from executing... 
     blockCShouldStop = YES; // <<== Set the flag 
     return; 

     void (^simpleBlock)(void) = ^{ 
      //block C 
      ... 
      if (blockCShouldStop) { // <<== Check the flag 
       return; 
      } 
     }; 
    }; 
}; 
+0

Sweet! спасибо – NorCalKnockOut

Смежные вопросы