Estoy trabajando en una aplicación de iPhone que muestra un mapa con varias superposiciones de círculo en ciertas ubicaciones. Me encuentro con serios problemas de memoria y bloqueos cuando agrego más de 6 círculos y alejo lo suficiente como para que todos estén visibles. Cuando acerco la imagen de modo que solo se vean 2 círculos, todo está bien. Cuando elimino las MKOverlays, todo funciona bien.MKOverlays múltiples en un MKMapView conducen a advertencias de memoria
¿Alguien que reconoce este comportamiento?
Código que crea las superposiciones. Almaceno las superposiciones en un NSMutableDictionary para referencia futura (para poder eliminarlos del mapa y para evitar la doble superposiciones)
- (void)updateMarkersForZones:(NSArray *)zones {
NSLog(@"MapViewController: Update Markers");
// For each zone, show a marker
for (Zone* zone in zones) {
NSString *keyMarker = [NSString stringWithFormat:@"%d-marker", zone.id];
MKCircle *circle = [overlayCache objectForKey:keyMarker];
if (circle == nil) {
// draw the radius circle for the marker
double radius = MAX(zone.markerRadius * 1.0, 1.0);
circle = [MKCircle circleWithCenterCoordinate:zone.location radius:radius];
[mapView addOverlay:circle];
// store the circle in a cache for future reference
[overlayCache setObject:circle forKey:keyMarker];
}
}
}
código que hace que los puntos de vista de superposición
#pragma mark -
#pragma mark MKMapViewDelegate
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{
MKCircleView *circleView = [[[MKCircleView alloc] initWithCircle:overlay] autorelease];
circleView.lineWidth = 1.0;
circleView.strokeColor = [UIColor redColor];
return circleView;
}
Código que libera el Caché de superposición
- (void)dealloc {
[overlayCache release];
[mapView release];
[super dealloc];
}
curioso qué versión de los iOS esto está sucediendo en. ¿Dónde ves el pico de consumo de memoria en los instrumentos? – Nick
Estoy ejecutando iOS 4.0. La clase MKCircle se agregó en 4.0. Hice algunas pruebas más y parece que solo conduce a problemas graves en un iPhone 3G. 3GS y el simulador funcionan bien. No veo picos en los instrumentos, eso hace que sea difícil investigar esto .. – rule