iOS 系统地图内存优化方案
2019-02-22 本文已影响9人
Leeson1989
做开发的大部分时间都在跟地图打交道,在滑动和拉伸地图时,地图的内存增加的吓人,而且不会降下来。
网上千篇一律的解决方案是
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
[self.mapView removeFromSuperview]; //优化内存
[self addSubview:mapView];
}
但实际效果并不好,内存还是居高不下。
可以试试下面的方案,亲测有效
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
[self LXMapViewMemoryRelease];//优化内存
}
- (void)LXMapViewMemoryRelease{
MKMapType _type = _mapView.mapType;
switch (_mapView.mapType) {
case MKMapTypeHybrid:
{
_mapView.mapType = MKMapTypeStandard;
}
break;
case MKMapTypeStandard:
{
_mapView.mapType = MKMapTypeHybrid;
}
break;
default:
break;
}
_mapView.mapType = _type;
}
不再用地图时,销毁地图,并销毁地图上的所有元素,内存可下降30M左右
//在退出地图的时候可以销毁地图上的所有元素 下次需要再初始化
- (void)destroyMapView
{
_mapView.mapType = MKMapTypeStandard;
_mapView.showsUserLocation = NO;
[_mapView.layer removeAllAnimations];
[_mapView removeAnnotations:_mapView.mapView.annotations];
[_mapView removeOverlays:_mapView.mapView.overlays];
_mapView.delegate = nil;
[_mapView removeFromSuperview];
_mapView = nil;
[self removeFromSuperview];
}