geocodeAddressString
次のクラス メソッドは、ブロックを非同期で実行するため、明らかに null 値を返します。
GCD を使用してこれを機能させるベスト プラクティスは何ですか?
+ (CLLocationCoordinate2D)reverseGeocoding:(NSString *)address
{
CLLocationCoordinate2D __block streetAddressCoordinates;
CLGeocoder *streetAddressGeocoder = [[CLGeocoder alloc] init];
[streetAddressGeocoder
geocodeAddressString:address
completionHandler:^(NSArray *placemarks, NSError *error)
{
if ([placemarks count] > 0 && error == nil)
{
CLPlacemark *firstPlacemark;
firstPlacemark = [placemarks objectAtIndex:0];
streetAddressCoordinates = firstPlacemark.location.coordinate;
}
else if ([placemarks count] == 0 && error == nil){
NSLog(@"Found no placemarks.");
}
else if (error != nil){ NSLog(@"An error occurred = %@", error);
}
}];
return streetAddressCoordinates;
}