iOS技术

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];
}
上一篇下一篇

猜你喜欢

热点阅读