Objective C只读int?什么?

Mas*_*son 19 int objective-c readonly

我做了一个int来计算我的一个进程有多少成功.在我的代码之外,我声明:

int successes = 0.

然后在我的循环中,我有successes++;,此时XCode抱怨"变量不可分配(缺少_block类型说明符)".

到底是怎么回事?为什么我不能增加我的int?我从未宣称它是只读的......

任何帮助深表感谢.

我使用的代码是:

_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];
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*eek 41

你的循环在一个块内(^{...}语法).如果没有具有__block说明符的变量,则块不能更改块外的变量.

  • 两个下划线. (15认同)
  • 感谢您对DOUBLE下划线的评论; 我无法弄清楚我做错了什么,因为使用的字体并没有将下划线分开. (2认同)

小智 11

您尝试int在块内访问它.将其标记为__block可以从块内更新.

块编程主题