Objective C 只读 int?什么?

发布于 2024-11-24 13:21:09 字数 1002 浏览 0 评论 0原文

我做了一个整数来计算我的一个流程有多少成功。在我的代码之外,我声明:

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];
}

I made an int to count how many successes one of my processes has. Outside my code, I declare:

int successes = 0.

Then within my loop, I have successes++;, at which point XCode complains that "variable is not assignable (missing _block type specifier)".

What is going on? Why can't I increment my int? I never declared it read-only...

Any help is much appreciated.

The code I used is:

_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];
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

此岸叶落 2024-12-01 13:21:09

您的循环位于块内(^{...} 语法)。如果变量没有 __block 说明符,则块无法更改块外部的变量。

Your loop is inside a block (^{...} syntax). Blocks cannot alter variables outside of the block without that variable having a __block specifier.

宁愿没拥抱 2024-12-01 13:21:09

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

块编程主题

You tried accessing this int inside a block. Mark it as __block so it can be updated from within the block.

Blocks Programming Topics

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文