Én némi probléma MKMapView / megjegyzések / UINavigationController. Alapvetően sikerül nézeteimet egy UINavigationController; az egyik nézet tartalmaz egy MKMapView és én hozzá kommentárokat rajta (10-200) a addAnnotations módszerrel.
Minden jól működik, kivéve egy dolgot: ha én navigálni „túl gyors” én UINavigationController, az iPhone szimulátor összetörik, amelyhez a „EXC BAD ACCESS” jelet. Például, ha én betölteni Álláspontom tartalmazó MKMapView és azonnal nyomja meg a „Vissza” gomb a UINavigationController navigációs sáv, én kap a jelet. Rájöttem, hogy a probléma a addAnnotations módszer: amikor a MKMapView betöltődik, hozzáteszem kommentárokat, de úgy néz ki, mint minden kész aszinkron. Ha várok, mint a második előtt nyomja meg a „Vissza” gombot, értem nincs hiba, de ha én vagyok túl gyors, összeomlik. Kapok nincs hiba egyáltalán, ha leveszem a addAnnotations sort. Azt hiszem, azért, mert véleményem szerint felszabadul a UINavigationController ELŐTT addAnnotations módszer van a munkát.
Minden jó megoldás erre? Nem akarom, hogy a felhasználó várni (megjelenítésével terhelési nézet például); Azt hiszem, a megoldás lehet a jobb memóriakezelés, de én nem értem, hogyan tudnám ezt.
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); }
Ez a példa, én kap a „Hozzáadás helyjelzőket: kész” üzenetet, mielőtt bármi is megjelennek a térképen.













