Mám nějaký problém s MKMapView / anotací / UINavigationController. V podstatě, i řídit mé názory pomocí UINavigationController; jeden z mého pohledu obsahuje MKMapView a já přidat poznámky o tom (10 až 200) pomocí metody addAnnotations.
Vše je v pořádku až na jednu věc: pokud i navigovat „příliš rychle“ na mém UINavigationController, zhroutí iPhone simulátoru, který je příjemcem „špatný přístup EXC“ signál. Například, pokud jsem nahrát svůj názor obsahující MKMapView a ihned stiskněte tlačítko „Zpět“ z UINavigationController navigačním panelu, i dostat signál. Myslel jsem si, že problém byl s metodou addAnnotations: pokud je vložen můj MKMapView, i přidat poznámky k němu, ale vypadá to, že vše, co se děje asynchronně. Pokud se i čekat jako druhý před stisknutím tlačítka „Zpět“, jsem si žádnou chybu, ale pokud jsem příliš rychle, došlo ke zhroucení. Mám žádná chyba vůbec, pokud i odstranit addAnnotations linku. Myslím, že je to proto, že můj názor je propuštěn UINavigationController před metodu addAnnotations dostal práci.
Každá dobrá řešení tohoto problému? Nechci, aby uživatel čekat (zobrazení zaváděcí pohled například); Myslím, že řešením by mohlo být lepší správu paměti, ale já nechápu, jak jsem mohl udělat.
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); }
Na tomto příkladu je i dostat „Pomocí značky: done“ message před vším dostat zobrazí na mapě.













