美文网首页iOS技术
iOS 系统地图内存优化方案

iOS 系统地图内存优化方案

作者: Leeson1989 | 来源:发表于2019-02-22 17:31 被阅读9次

    做开发的大部分时间都在跟地图打交道,在滑动和拉伸地图时,地图的内存增加的吓人,而且不会降下来。
    网上千篇一律的解决方案是

    - (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];
    }
    

    相关文章

      网友评论

        本文标题:iOS 系统地图内存优化方案

        本文链接:https://www.haomeiwen.com/subject/tvoeyqtx.html