J'ai eu quelques problèmes avec les rappels de CLLocationManager
Quelle est la meilleure façon d'attendre un rappel asynchrone?Attendre un rappel asynchrone - Objective-C
Voici ce que je veux essentiellement faire:
- (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; }
Où self.currentCity et self.newCoordonate est un attribut dans ma classe.
J'ai essayé quelques trucs comme Thread et/ou synchronisé mais je n'ai pas réussi à ne pas revenir avant que tout soit fini.
Meilleures salutations
self.currentCoordonate = & newCoordonate; Cela me fait peur à plusieurs niveaux –
Le but du rappel asynchrone est que vous n'avez pas à l'attendre. – koo