相关疑难解决方法(0)

iOS6 MKMapView使用了大量的内存,到了崩溃的应用程序,其他人都注意到这一点?

有没有其他人,他们在iOS 6应用程序中使用地图,注意到极高的内存使用,一直到接收内存警告到崩溃的应用程序?

我通过仪器运行应用程序,我没有看到任何泄漏,直到创建地图视图,应用程序始终以大约3mb Live Bytes运行.创建地图并下载切片后,Live Bytes会跳至~13mb Live Bytes.然后,当我移动地图并放大和缩小Live Bytes连续体时,直到应用程序崩溃在大约40mb Live Bytes.顺便提一下,这是在iPhone 4上.在iPod touch上它甚至更早崩溃.

我正在重复使用注释视图,没有任何泄漏.是否有其他人在使用新的iOS 6地图时看到了相同的高内存使用量?还有,有没有人有解决方案?

memory memory-management mkmapview ios6 ios6-maps

52
推荐指数
6
解决办法
2万
查看次数

MKMapView每次加载其视图时都会占用大量内存

我有一个非常简单的应用程序,有几个视图控制器.第二个视图控制器中有一个MKMapView.它设置正确,功能正常.问题是,每次加载它的视图时,内存使用量会跳跃~30mb,并且永远不会回落,所以每次进入视图时它都会继续跳跃并最终变得超高.当我离开控制器时我尝试删除地图视图:

override func viewWillDisappear(animated: Bool) {
        map.removeFromSuperview()
    }
Run Code Online (Sandbox Code Playgroud)

但它对记忆没有任何影响.地图视图委托设置为其视图控制器.

我尝试使用Xcode仪器检查泄漏,但没有找到任何东西.

有谁知道如何解决这一问题?

谢谢

编辑:添加这似乎工作:

func removeNastyMapMemory() {
        map.mapType = MKMapType.Hybrid
        map.delegate = nil
        map.removeFromSuperview()
        map = nil
    }

    override func viewWillDisappear(animated: Bool) {
        removeNastyMapMemory()
    }
Run Code Online (Sandbox Code Playgroud)

xcode mkmapview ios swift

9
推荐指数
1
解决办法
5029
查看次数

MKMapView发布内存

我已经按照几个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;
}
Run Code Online (Sandbox Code Playgroud)

在某种程度上,它有效,但不完全.我来提供一些数据.

以下是Instruments的内存分配记录.

在此输入图像描述

两个红色标记(Generations)表示我MKMapView在模态视图控制器中显示之前的状态以及我解除它之后的状态.MKMapView好像被解除了分配.例如,如果我在Instruments中过滤Statistics堆栈,则在MKMapView呈现模态视图时确实会出现该对象,并且一旦关闭它就会消失.但是,在取消了地图视图后,我仍然有30多MB的内存尚未被释放.

第B代(第二个红旗)数据显示存在大量保存此内存的对象(和非对象).

在此输入图像描述

当我查看其中一个实例的扩展细节时,它通常会显示一个包含私有类的堆栈跟踪,我猜这些私有类与地图绘制有关 在此输入图像描述

有谁知道如何释放所有数据?我可以/应该清理一些缓存吗?

memory objective-c mkmapview ios

5
推荐指数
1
解决办法
2033
查看次数