我很困惑为什么在通过一个块后我不能再次访问我的全局变量。这是我的代码:
__block NSString *latitude;
__block NSString *longitude;
CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
[geoCoder geocodeAddressString:location completionHandler:^(NSArray* placemarks, NSError* error)
{
for (CLPlacemark* aPlacemark in placemarks)
{
CLLocation *latLong = aPlacemark.location;
latitude = [NSString stringWithFormat:@"%f", latLong.coordinate.latitude];
longitude = [NSString stringWithFormat:@"%f", latLong.coordinate.longitude];
//works fine
NSLog(@"CLLOCATION SSSSSSSSSSSSSSSSSSSSSS LAT: %@, LONG: %@", latitude, longitude);
}
}];
//no bueno
NSLog(@"CLLOCATION SSSSSSSSSSSSSSSSSSSSSS LAT: %@, LONG: %@", latitude, longitude);
现在我尝试NSString
以不同的方式初始化我的 s :
__block NSString *latitude = @"";
__block NSString *longitude = @"";
和:
__block NSMutableString *latitude = [NSMutableString string];
__block NSMutableString *longitude = [NSMutableString string];
但是当我访问块外的变量时,我只会得到空字符串。
这尤其令人困惑,因为在 Apple 的文档中http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1
,他们能够在块之外设置变量,使用它们并很好地检索它们。