У меня были проблемы с обратными вызовами CLLocationManager
Каков наилучший способ ожидания асинхронного обратного вызова?Ожидание асинхронного обратного вызова - Objective-C
Вот что я в принципе хочу сделать:
- (NSString *)getCurrentCity { [self.locationManager startUpdatingLocation]; // Wait for coordonate in callbacks self.geocoder = [MKReverseGeocoder alloc] initWithCoordonate:self.newCoordonate]; [self.geocoder start]; // Wait for information with MKReverse callbacks return self.currentCity; } // Callbacks methods of MKReverseGeocoder and CLLocationManager - (void)locationManager:(CLLocationManager *)manager idUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { CLLocationCoordinate2D newCoordonate = newLocation.coordinate; self.currentCoordonate = &newCoordonate; } - (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark { self.currentCity = placemark.locality; }
Где self.currentCity и self.newCoordonate является attribut в моем Классе.
Я пробовал некоторые трюки, такие как Thread и/или синхронизированный, но мне не удалось его вернуть, прежде чем все закончится.
С наилучшими пожеланиями
self.currentCoordonate = & newCoordonate; Это пугает меня на нескольких уровнях. –
Весь смысл асинхронного обратного вызова заключается в том, что вам не нужно его ждать. – koo