2012-07-17 12 views
14

¿Cómo detengo una enumeración aquí si estoy haciendo lo siguiente? Creo que los doctores dijeron que establecer stop = TRUE. pero cuando hago eso dentro del bloque, dice que no es anulable.deteniendo una enumeración de bloques para un NSDictionary

[self.visibleViewControllers_ enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 

      if (CGRectIntersectsRect(visibleRect, viewRect)) { 
       //break here 
      } 
     }]; 
+1

parada es un puntero. No establece stop en true porque es un puntero. Usted escribe * stop = YES – gnasher729

Respuesta

26

Establecer *stop a YES

[self.visibleViewControllers_ enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 

      if (CGRectIntersectsRect(visibleRect, viewRect)) { 
       *stop =YES; 
       return; 
      } 
     }]; 
+3

Probablemente también quiera una declaración 'return' inmediatamente después de establecer' * stop = YES', si hay algo más adelante en su bloque. –

2

para SWIFT 2:

Dict.enumerateKeysAndObjectsUsingBlock { (key, value, stop) -> Void in 

      if(//Something){ 
       //Do Something 
      } 
      else { 
       //To Stop 
       stop.memory = true 
      } 
     } 
Cuestiones relacionadas