Я пытаюсь перенаправить геокодирование адреса в iOS 5, используя объект CLGeocoder и помещая полученный CLLocation в переменную экземпляра. По какой-то причине я могу установить переменную экземпляра и затем вызвать ее геттер, но переменная теряет свое значение вне области действия обработчика завершения геокодера.
Я объявил переменную в моем .h файле:
@property (nonatomic, strong) CLLocation *specifiedPosition;
Затем синтезировал его в моем .m:
@synthesize specifiedPosition = _specifiedPosition;
А затем попытался использовать геокодер следующим образом: первый NSLog возвращает широту и долготу, а второй нет:
-(void)getLatLong:(NSString *)locationText
{
if (!self.geocoder)
{
self.geocoder = [[CLGeocoder alloc] init];
}
[self.geocoder geocodeAddressString:locationText completionHandler:^(NSArray *placemarks, NSError *error){
if ( ([placemarks count] > 0) && (error == nil)) {
self.specifiedPosition = [[placemarks objectAtIndex:0] location];
NSLog(@"Specified Location variable is set to: %@", self.specifiedPosition);
} else if (error == nil && [placemarks count] == 0){
// TODO
NSLog(@"Can't find data on the specificed location");
}
else if (error != nil){
// TODO
NSLog(@"An error occurred = %@", error);
}
}];
NSLog(@"Specified Location variable is set to: %@", self.specifiedPosition);
}
Я также попробовал пользовательский установщик, но это не помогло:
-(void)setSpecifiedPosition:(CLLocation *)specifiedPosition
{
_specifiedPosition = specifiedPosition;
}
Заранее спасибо за помощь!