У меня возникла проблема с MKMapView/аннотациями/UINavigationController. В основном, я управляю своими представлениями с помощью UINavigationController; одно из моих представлений содержит MKMapView и я добавляю к нему аннотации (от 10 до 200) с помощью метода addAnnotations.addAnnotations issue (возможно, управление памятью?)
Все работает отлично, за исключением одного: если я перемещаюсь «слишком быстро» на моем UINavigationController, симулятор iphone падает, получая сигнал «EXC BAD ACCESS». Например, если я загружаю свой просмотр, содержащий MKMapView, и сразу же нажимаю кнопку «Назад» на панели навигации UINavigationController, я получаю сигнал. Я решил, что проблема связана с методом addAnnotations: когда мой MKMapView загружен, я добавляю к нему аннотации, но похоже, что все делается асинхронно. Если я подожду, как секунду, прежде чем нажать кнопку «Назад», я не получу ошибки, но если я слишком быстро, он сработает. Я вообще не ошибаюсь, если я удалю строку addAnnotations. Я предполагаю, что это потому, что мой взгляд выпущен UINavigationController, прежде чем метод addAnnotations выполнил эту работу.
Любое хорошее решение для этого? Я не хочу, чтобы пользователь ждал (например, отображая загрузочный вид); Я думаю, что решение может быть лучшим управлением памятью, но я не вижу, как это сделать.
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"); }
На этом примере я получаю «Добавление меток: сделано» сообщение, прежде чем что-либо получить отображаются на карте.
Это точно такая же проблема, и она работает :) Теперь это звучит очевидно ... Спасибо за ваш ответ! – Vivi
Ваша ссылка больше не работает. – J2theC