Am ceva probleme cu MKMapView / adnotări / UINavigationController. Practic, am gestiona opiniile mele folosind un UINavigationController; unul dintre opinia mea conține o MKMapView și am adăuga adnotări pe ea (10 la 200), folosind metoda addAnnotations.
Totul funcționează bine, cu excepția unui singur lucru: dacă am naviga „prea repede“ pe UINavigationController meu, accidente iPhone Simulator, primind un semnal de „EXC ACCES BAD“. De exemplu, în cazul în care i încărcați punctul meu de vedere care conține MKMapView și apăsați pe butonul Îndată, „Înapoi“ din bara de navigare UINavigationController, am obține semnalul. M-am gândit că problema a fost cu metoda addAnnotations: atunci când este încărcat MKMapView meu, am adăuga adnotări la aceasta, dar se pare că totul se face asincronă. Dacă aștept ca un al doilea înainte de a apăsa butonul „Back“, nu primesc nici o eroare, dar dacă eu sunt prea repede, se blochează. I a lua nici o eroare la toate, dacă am elimina linia addAnnotations. Cred că e pentru că punctul meu de vedere este eliberat de UINavigationController ÎNAINTE metoda addAnnotations a primit treaba.
Orice soluție bună la asta? Nu vreau ca utilizatorul să aștepte (afișarea în vederea încărcare, de exemplu); Cred că soluția ar putea fi o mai bună gestionare a memoriei, dar eu nu văd cum am putea face acest lucru.
if(DEBUG_MODE) { NSLog(@Creating array of placemarks : begin); }
self.placemarkCache = [[NSMutableArray alloc] init];
// Loading placemarks for a placemark dictionary
NSArray *sortedKeys = [[self.placemarkDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)];
for (id key in sortedKeys) {
MyPlacemark *currentPlacemark = [self.placemarkDictionary objectForKey:key];
[self.placemarkCache addObject:currentPlacemark];
[currentPlacemark release];
}
if(DEBUG_MODE) { NSLog(@Creating array of placemarks : done); }
if(DEBUG_MODE) { NSLog(@Adding placemarks : begin); }
[self.mapView addAnnotations:self.placemarkCache];
if(DEBUG_MODE) { NSLog(@Adding placemarks : done); }
În acest exemplu, am obține „marcatorii Adăugarea: făcut“ mesaj înainte de orice se afișează pe hartă.













