मैं एक आईफोन ऐप पर काम कर रहा हूं जो कुछ स्थानों पर एकाधिक सर्कल ओवरले के साथ एक नक्शा दिखाता है। जब मैं 6 से अधिक मंडलियों को जोड़ता हूं तो मैं गंभीर स्मृति समस्याओं और क्रैश में भाग रहा हूं और मैं बहुत दूर ज़ूम आउट करता हूं कि वे सभी दिखाई दे रहे हैं। जब मैं ज़ूम इन करता हूं कि केवल 2 मंडल दिखाई दे रही हैं, तो सब ठीक है। जब मैं एमके ओवरलेज़ को हटा देता हूं, तो सब कुछ ठीक काम करता है।MKMapView पर एकाधिक MKOverlays स्मृति चेतावनियों के लिए नेतृत्व
कोई भी जो इस व्यवहार को पहचानता है?
कोड जो ओवरले बनाता है। मैं एक NSMutableDictionary में ओवरले भविष्य में संदर्भ के लिए (उन्हें नक्शे से दूर करने के लिए सक्षम होने के लिए और डबल ओवरले को रोकने के लिए)
- (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];
}
}
}
कोड ओवरले बार देखा गया है कि बनाता है
#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;
}
कोड है कि रिलीज की दुकान ओवरले कैश
- (void)dealloc {
[overlayCache release];
[mapView release];
[super dealloc];
}
जिज्ञासु क्या आईओएस इस पर हो रहा है के संस्करण। आप उपकरणों में स्मृति खपत स्पाइक कहां देखते हैं? – Nick
मैं आईओएस 4.0 चला रहा हूं। एमकेसीकल कक्षा को 4.0 में जोड़ा गया था। मैंने कुछ और परीक्षण किया और यह केवल आईफोन 3 जी पर गंभीर समस्याएं पैदा करता है। 3 जीएस और सिम्युलेटर ठीक काम करते हैं। मुझे उपकरणों में कोई स्पाइक्स नहीं दिख रहा है, जिससे इसकी जांच करना मुश्किल हो जाता है .. – rule