Belirli konumlarda birden fazla daire bindirmesi olan bir haritayı gösteren bir iPhone uygulaması üzerinde çalışıyorum. 6'dan fazla daire eklediğimde ciddi bellek sorunlarına ve çökmelere yol açıyorum ve bunların hepsinin görülebildiğinden yeterince uzaklaşıyorum. Yalnızca 2 çevrede görünecek şekilde yakınlaştırdığımda, her şey yolunda. MKOverlay'ları kaldırdığımda her şey iyi çalışıyor.MKMapView'daki Birden Fazla MKOverlay, bellek uyarılarına yol açıyor
Bu davranışı tanıyan var mı?
Kaplamaları oluşturan kod. Bir NSMutableDictionary içinde bindirmeleri ileride başvurmak üzere (haritada bunları kaldırmak için muktedir ve çift bindirmeleri önlemek için) bindirme incelemeler serbest bırakır
#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;
}
Kod yapar
- (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];
}
}
}
Kod saklamak kaplamayı önbellek
- (void)dealloc {
[overlayCache release];
[mapView release];
[super dealloc];
}
Meraklı bu ne oluyor bir iOS sürümü. Enstrümanlarda hafıza tüketimi artışını nerede görüyorsunuz? – Nick
iOS 4.0 çalıştırıyorum. MKCircle sınıfı 4.0'da eklendi. Daha fazla test yaptım ve sadece iPhone 3G'de ciddi sorunlara yol açıyor gibi görünüyor. 3GS ve simülatör iyi çalışıyor. Enstrümanlarda herhangi bir ani artış görmüyorum, bunu araştırmak zorlaştırıyor. – rule