作者:拍友2702938227 | 来源:互联网 | 2023-05-21 09:46
我已经按照几个SO问题提供的建议,比如这个问题,以便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中过滤Statistics堆栈,则在MKMapView
呈现模态视图时确实会出现该对象,并且一旦关闭它就会消失.但是,在取消了地图视图后,我仍然有30多MB的内存尚未被释放.
第B代(第二个红旗)数据显示存在大量保存此内存的对象(和非对象).
当我查看其中一个实例的扩展细节时,它通常会显示一个包含私有类的堆栈跟踪,我猜这些私有类与地图绘制有关
有谁知道如何释放所有数据?我可以/应该清理一些缓存吗?