J'essaie de récupérer le nom de la ville avec cllocation et mkreversegeocoder. dans ma méthode viewDidLoad i Istance cllocationmanager:cllocation et mkreversegeocoder
self.locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
locManager.desiredAccuracy = kCLLocationAccuracyBest;
[locManager startUpdatingLocation];
et après:
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation
*)newLocation
fromLocation:(CLLocation *)oldLocation {
//some code to retrieve my information
MKReverseGeocoder *geoCoder = [[MKReverseGeocoder alloc]
initWithCoordinate:newLocation.coordinate ];
geoCoder.delegate = self;
[geoCoder start];
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark
*)placemark
{
MKPlacemark *myPlacemark = placemark;
citta.text = [placemark locality];
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error{
citta.text [email protected] "Unknow";
application ne fonctionne que la première fois que je reçois ma valeur. sur la deuxième fois le crash de l'application. Je pense que c'est parce que geocoder est démarré et je pense que je dois avoir un et un seul istance en cours d'exécution. (mais je ne suis vraiment pas sûr de ça ...). de quelle façon je peux contrôler geocoder est en cours d'exécution?
J'ai vu que je peux istance mkreversegeocoder dans mon viewdidload en utilisant cllocationcoordinate2d mais ... de quelle façon je peux récupérer newlocation.coordinate?
J'ai résoudre en partie déclarant géocodage comme variable de classe et la vérification
if (self.geocoder != nil) {
[geocoder release];
}
mais .... si dans mon
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark
*)placemark
ou dans mon
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailedWithError:(@NSError
*)error
i libérer ou annuler mon objet? Je me sens si stupide: D
'[aucune version];' fonctionne (ne fait rien) donc il n'y a pas besoin de vérifier. –