【发布时间】:2014-04-09 03:30:24
【问题描述】:
我试图在完成处理程序中存储一个字符串值,但它的范围仅限于该块。如何解决?
// 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 的值再次变为 null。请告诉我,如何在完成处理程序之外保留值,我将其存储在完成处理程序中。
【问题讨论】:
-
尝试
co = placemark.country;,co = [co copy]; -
不,那样不行!
-
在 NSString *co; 之前添加 __block;
标签: ios block local-variables