Я использую диспетчер местоположений для получения местоположения пользователя, когда он / она нажимает кнопку.
Мне просто нужно это местоположение времени exat, поэтому я отключаю обновления после получения местоположения.
Дело в том, что местоположение, в которое я получаю идентификатор 0 лат 0 lng в первый раз.
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
lat = newLocation.coordinate.latitude;
lng = newLocation.coordinate.longitude;
[locationManager stopUpdatingLocation];
NSLog(@"New Latlng: %f x %f", lat, lng);
}
Когда пользователь нажимает кнопку, которую я вызываю: [locationManager startUpdatingLocation];
И сразу после этого я отправляю местоположение на мой сервер [self sendData].Но место это ноль.В моем методе -sendData я добавил NSLog для отслеживания происходящего и понял, что отправляю данные на сервер до вызова -locationManager: didUpdateToLocation ...
2012-04-02 16:06:24.225 MyApp[2892:707] ---- Data sent to server ----
2012-04-02 16:06:25.167 MyApp[2892:707] Nova Latlng: -23.003582 x -43.316311
Я пыталсяэто, но это не сработало так, как ожидалось:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
[locationManager startUpdatingLocation];
dispatch_async(dispatch_get_main_queue(), ^{
[self sendData];
});
});
Как заставить [self sendData] ждать, пока у меня не будут правильно заполнены переменные lat и lng?