如何在viewwilldisappear MKMapView上释放内存?

3

大家好,我在我的UIViewController中有一个MKMapView。当我打开这个视图时,内存占用从20MB上升到100MB。在viewwilldisappear方法中,我添加了以下内容:

-(void)viewWillDisappear:(BOOL)animated{
     [self.mapView release];
}

但是内存保持不变。它不会减少。

您是否也发布了在MKMapView中显示的任何数据,如注释?另外,在您的方法中,我缺少对[super viewWillDisappear:animated];的调用。如果您能够更新,我建议您使用ARC,因为它会比自己处理内存管理更方便。 - rckoenes
1个回答

15

MKMapviews 经常会泄漏。你需要像这样应用以下方法:

将地图视图的代理设置为nil,这将防止MKMapView向其发送消息。

self.mapView.showsUserLocation = NO;
self.mapView.delegate = nil;
[self.mapView removeFromSuperview];
self.mapView = nil;

当你收到内存警告时,你也可以更改地图类型。

这是苹果公司的说法。

在释放已设置委托的MKMapView对象之前,请记住将该对象的委托属性设置为nil。一个您可以这样做的地方是在释放地图视图的dealloc方法中。


太棒了 :) 玩得开心 :) - DivineDesert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接