出于某种原因,当我将其记录在括号内时,我得到了一个邮政编码,但当我尝试在括号外记录时,我得到了一个 (null)。我还在头文件中声明了“zip”。我敢肯定,这是没有道理的。一点帮助?
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
CLGeocoder *fgeo = [[CLGeocoder alloc] init];
[fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
self.zip = placemark.postalCode;
**NSLog(@"%@", _zip);**
}
}];
**NSLog(@"%@",self.zip);**
问题解决编辑:
好的,在我能够将块传递到我的下一个方法之后,感谢 SIMON:
CLGeocoder *fgeo = [[CLGeocoder alloc] init];
[fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
self.zip = placemark.postalCode;
**NSLog(@"%@", _zip);**
[self someMethod];
我发现我最终一遍又一遍地调用同一个块。所以我能够使用以下代码来阻止我的代码循环和崩溃我的应用程序,我将我的块包装在以下内容中:
static dispatch_once_t once;
并将我的代码包装在这个:
dispatch_once(&once,^{
});
它直接解决了问题!感谢大家!