iOS开发:MKMapView地图内存持续增加的释放解决办法_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS开发:MKMapView地图内存持续增加的释放解决办法

iOS开发:MKMapView地图内存持续增加的释放解决办法

 2015/4/27 17:14:42  bibibi_liuliu  程序员俱乐部  我要评论(0)
  • 摘要:最近修改一个用到MKMapView的项目,内存一直占用过多,每次拖拽地图时还会增加占用,且一直无法释放。经过两天的排查,最后锁定是创建的self.map对象在加载地图的时候,不断申请内存,但在View的生命期内不会释放。查阅资料了解到removeFromSuperview可以释放内存,但remove的话地图会从父View上消失。最后解决办法是在-(void)mapView:(MKMapView*)mapViewregionDidChangeAnimated:(BOOL
  • 标签:解决办法 解决 view Map iOS 开发 内存

最近修改一个用到MKMapView的项目,内存一直占用过多,每次拖拽地图时还会增加占用,且一直无法释放。

经过两天的排查,最后锁定是创建的self.map对象在加载地图的时候,不断申请内存,但在View的生命期内不会释放。

查阅资料了解到removeFromSuperview可以释放内存,但remove的话地图会从父View上消失。

最后解决办法是在- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated中加入了两行代码

[self.map removeFromSuperview];
[self.view addSubview:mapView];

在移除self.map的同时,重新加载mapView,两行代码就可以达到释放内存的效果。

用Instruments测试显示,之前不能释放的内存可以释放了。下图中的Malloc 4.00MB 即为地图申请的内存,总共申请164M,释放132M后,程序平稳运行时的地图内存只需要28M。

发表评论
用户名: 匿名