首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将完成处理程序中的值存储到变量中。

将完成处理程序中的值存储到变量中。
EN

Stack Overflow用户
提问于 2014-04-09 03:30:24
回答 3查看 1.3K关注 0票数 2

我试图在完成处理程序中存储一个字符串值,但是它的作用域仅限于该块。如何解决这个问题?

代码语言:javascript
运行
复制
// Do any additional setup after loading the view, typically from a nib.
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];


    CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
    NSString *co;
    [geocoder reverseGeocodeLocation:locationManager.location
                   completionHandler:^(NSArray *placemarks, NSError *error) {
                       NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");

                       if (error){
                           NSLog(@"Geocode failed with error: %@", error);
                           return;

                       }


                       CLPlacemark *placemark = [placemarks objectAtIndex:0];



                       NSLog(@"placemark.country %@",placemark.country);
                       co = placemark.country;
                       // 
                   }];

    NSLog(@"%@",co);

在这一行,co的值再次变为空。请告诉我,如何才能保留完成处理程序之外的值,这是我存储在完成处理程序中的。

EN

Stack Overflow用户

发布于 2014-04-09 03:42:35

在完成块之前,您编写的NSLog命令将起作用。由于发生这种情况,您将得到null。您可以做的一件事是在块中打印co的值,而不是在外部执行。

co的声明更改如下:

代码语言:javascript
运行
复制
 __block NSString *co= nil; 
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22952252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档