Мне нужно было недавно проверить мое приложение с помощью распределений из-за предупреждений о памяти. Даже утечек нет, куча продолжает расти с добавлением аннотаций к карте. Каждый раз, когда я увеличить или уменьшить масштаб, старые аннотаций удаляются, новые создаются и добавляются к карте:Проблема с утечкой памяти MKAnnotationView
Все ячейки памяти из группы NumberedAnnotationView показать отмеченные линии, как проблематично viewForAnnotation
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
static NSString *reuseId_big = @"bigcircle";
NumberedCircleAnnotationView * nca = nil;
//nca = (NumberedCircleAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:reuseId_big];
if (nca == nil)
nca = [[[NumberedCircleAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId_big imageType:1] autorelease]; // THIS line
nca.delegate = self;
}
return nca;
}
инициализация выглядит следующим образом:
-(id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier imageType:(int)imageType {
self = [super initWithAnnotation: annotation reuseIdentifier: reuseIdentifier]; // THIS line
if (self != nil)
{
// set stuff
}
return self;
}
Даже после минут, этот autorele все еще есть объекты. (17 и 24 - количество аннотаций, отображаемых на карте и удаленных с [mapView removeAnnotations:[mapView annotations]];
каждый раз, когда я увеличиваю/уменьшаю.
Остальные, я думаю, некоторые сгенерированные MapKit вещи. Я испытываю это в симуляторе с версиями 5,0 и 5,1.
Как я могу это исправить? это то, что я не хватает? Или это нормальное поведение MapKit?
Спасибо!
Я хотел быть уверен, что я не использую любые изображения и другие вещи, которые могут привести к «кэширование», так что я заметил это, временно. – Templar
Omfg, я не могу поверить, но с 'dequeueReusableAnnotationViewWithIdentifier' работает отлично, нет более откровенных аннотаций. Я знаю, что «MKAnnotationViews» предназначены для повторного использования, но я не думаю, что это вызывает такие проблемы с памятью, если я этого не сделаю ... Спасибо вам большое! – Templar
Я рад, что смог помочь! Наслаждайтесь программированием iOS :) – azamsharp