2011-07-17 12 views
19

Hice una int para contar cuántos éxitos tiene uno de mis procesos. Fuera de mi código, declaro:Objective C read-only int? ¿Qué?

int successes = 0.

Luego, en mi ciclo, tengo successes++;, en cuyo punto XCode se queja de que "la variable no es asignable (falta el _pecificador de tipo de bloque)".

¿Qué está pasando? ¿Por qué no puedo incrementar mi int? Nunca lo dije como de solo lectura ...

Cualquier ayuda es muy apreciada.

El código que utiliza es:

_block int successes = 0; 

for(CLLocation *location in locationOutputArray) 
{ 
    CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) 
    { 
     if(placemarks && placemarks.count > 0) 
     { 
      successes++; 
      CLPlacemark *topResult = [placemarks objectAtIndex:0]; 

      NSString *address = [NSString stringWithFormat:@"%@ %@,%@ %@", [topResult subThoroughfare],[topResult thoroughfare],[topResult locality], [topResult administrativeArea]]; 

      [addressOutputArray addObject:address]; 
      NSLog(@"%@",address); 
     } 

    }]; 

    [geocoder release]; 
} 
+0

¿Has probado '__block int successes = 0;'? Será mejor que muestres tu código, porque está claro que estás usando bloques u otra cosa que no nos has dicho. – jtbandes

+0

solo para asegurarse, ¿esta es una aplicación multihilo? –

Respuesta

40

su bucle está dentro de un bloque (^{...} sintaxis). Los bloques no pueden alterar variables fuera del bloque sin que esa variable tenga un especificador __block.

+0

¡Oh! Eso tiene mucho más sentido. No me di cuenta de que la sintaxis se llamaba bloque. ¿Cómo declaro qué bloque enfrente? '_block int successes = 0;' throws "Uso del identificador no declarado '_block'". – Mason

+15

Dos guiones bajos. – jtbandes

+0

¡Muchas gracias! Aceptaré tu respuesta tan pronto como SO me lo permita. – Mason

11

Ha intentado acceder a esta int dentro de un bloque. Marcarlo como __block para que se pueda actualizar desde dentro del bloque.

Blocks Programming Topics