0

我想就我在获取用户当前位置的反向地理编码中的解决方案征求第二意见:

 - (void)reverseGeocodeLocation:(CLLocation *)location
{ 
    CLGeocoder* reverseGeocoder = [[CLGeocoder alloc] init];
    if (reverseGeocoder) {
        [reverseGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
            CLPlacemark* placemark = [placemarks firstObject];
            if (placemark && [placemark count] > 0) {
                 //Using blocks, get zip code
                 NSString *zipCode = [placemark.addressDictionary objectForKey:(NSString*)kABPersonAddressZIPKey];
            }
        }];
    }
    else{
        MKReverseGeocoder* revGeo = [[MKReverseGeocoder alloc] initWithCoordinate:location.coordinate];
        revGeo.delegate = self;//using delegate
        [revGeo start];
        [revGeo release]; 
    }
    [reverseGeocoder release];
}

但是,似乎有一点问题...我遇到了指向以下位置的 EXC_BAD_ACCESS 错误:

[reverseGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
            CLPlacemark* placemark = ...
        }];

你能告诉我出了什么问题吗?我收到一个EXC_BAD_ACCESS错误。

4

1 回答 1

1

您没有检查发送到块的错误。您假设您至少返回了一个地标,但由于某种原因,该数组可能为空。这当然可能是您的 EXC_BAD_ACCESS 错误的根源。

于 2012-03-30T19:36:01.283 回答