Tôi đang làm việc trên ứng dụng iPhone hiển thị bản đồ có nhiều lớp phủ vòng tròn ở một số vị trí nhất định. Tôi đang gặp sự cố nghiêm trọng về bộ nhớ và sự cố khi tôi thêm hơn 6 vòng kết nối và tôi thu nhỏ đủ xa để tất cả chúng đều hiển thị. Khi tôi phóng to để chỉ hiển thị 2 vòng tròn, tất cả đều ổn. Khi tôi loại bỏ các MKOverlays, mọi thứ hoạt động tốt.Nhiều MKOverlays trên MKMapView dẫn đến cảnh báo bộ nhớ
Bất kỳ ai nhận ra hành vi này?
Mã tạo lớp phủ. Tôi lưu trữ các lớp phủ trong một NSMutableDictionary để tham khảo trong tương lai (để có thể loại bỏ chúng khỏi bản đồ và để ngăn chặn lớp phủ kép)
- (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];
}
}
}
Mã mà làm cho các quan điểm overlay
#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;
}
Mã mà nhả overlay cache
- (void)dealloc {
[overlayCache release];
[mapView release];
[super dealloc];
}
Tò mò những gì phiên bản của iOS này đang xảy ra trên. Bạn thấy mức tăng tiêu thụ bộ nhớ trong các công cụ ở đâu? – Nick
Tôi đang chạy iOS 4.0. Lớp MKCircle đã được thêm vào 4.0. Tôi đã làm một số thử nghiệm nhiều hơn và nó chỉ có vẻ dẫn đến các vấn đề nghiêm trọng trên iPhone 3G. 3GS và mô phỏng hoạt động tốt. Tôi không thấy bất kỳ sự đột biến nào trong các công cụ, điều này gây khó khăn cho việc điều tra điều này .. – rule