【发布时间】:2015-04-22 08:54:31
【问题描述】:
我遵循了几个 SO 问题中的建议,例如 this one,以便从内存中释放 MKMapView - 下面是我的代码
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
self.map.mapType = MKMapTypeHybrid;
self.map.showsUserLocation = NO;
self.map.delegate = nil;
[self.map removeFromSuperview];
self.map = nil;
self.locationManager.delegate = nil;
}
它部分有效,但不完全有效。让我提供一些数据。
下面是 Instruments 的内存分配记录。
两个红旗(Generations)表示我在模态视图控制器中显示MKMapView之前和我关闭它之后的状态。 MKMapView 似乎被释放了。例如,如果我在 Instruments 中为 MKMapView 过滤统计堆栈,则该对象确实在显示模式视图时出现,并在关闭后消失。但是,关闭地图视图后,我仍有 30+ MB 的内存尚未释放。
B 代(第二个红旗)数据显示有大量对象(和非对象)持有该内存。
当我查看其中一个实例的扩展细节时,它通常会显示一个堆栈跟踪,其中包含私有类,我猜这些私有类与地图绘制有关
有人知道如何释放所有数据吗?是否有一些我可以/应该清理的缓存?
【问题讨论】:
-
你解决了这个问题吗?
-
不幸的是,还没有..
-
现在清除内存有没有运气?
-
唉。在某一时刻,我还将
self.locationManager设置为nil,它似乎有帮助,但它没有 - 内存仍在分配中。
标签: ios objective-c memory mkmapview