Tôi đã đọc các câu hỏi và câu trả lời StackOverflow khác và hiểu đây là lỗi do iOS6 (hoặc theo thiết kế, phải phân phối lại đại biểu, sau đó xem, ai biết). Tôi không biết tại sao hoặc làm thế nào nó đã không được cố định.Rò rỉ bộ nhớ trong MapKit iOS8
Anywho, tôi đã thêm các bản sửa lỗi nóng từ câu trả lời khác (dưới đây, để độc giả trong tương lai):
- (void) viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self applyMapViewMemoryHotFixOnDisappear];
}
- (void)applyMapViewMemoryHotFixOnDisappear{
[self applyMapViewMemoryHotFix];
self.mapView.showsUserLocation = NO;
self.mapView.delegate = nil;
self.locationManager.delegate = nil;
[self.mapView removeFromSuperview];
self.mapView = nil;
}
- (void)applyMapViewMemoryHotFix{
switch (self.mapView.mapType) {
case MKMapTypeHybrid:
{
self.mapView.mapType = MKMapTypeStandard;
}
break;
case MKMapTypeStandard:
{
self.mapView.mapType = MKMapTypeHybrid;
}
break;
default:
break;
}
self.mapView.mapType = MKMapTypeStandard;
}
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
[self applyMapViewMemoryHotFix];
}
Tuy nhiên, câu hỏi tôi có được, tại sao bộ nhớ không giảm xuống trước khi mức MapKit ?
Tôi còn thiếu điều gì khác không? Đây có phải là hành vi mong đợi không? Không có rò rỉ bộ nhớ đánh giá bởi profiler nhưng rõ ràng là một cái gì đó không đúng ...
Tôi thấy như vậy. Tìm thấy giải pháp nào? – thejaz
Không!Thành thật mà nói, thậm chí không áp dụng các 'hotfix' trên khu vực thay đổi. Các 'rò rỉ bộ nhớ' (nếu nó thậm chí là đó) là ok và không đáng chú ý trên một thiết bị thực sự, và nó không phát triển đó là tốt đẹp. – SparkyRobinson
Đồng ý, tôi nhận thấy nó tốt hơn trên thiết bị nhiều hơn trong trình mô phỏng. – thejaz