有没有其他人,他们在iOS 6应用程序中使用地图,注意到极高的内存使用,一直到接收内存警告到崩溃的应用程序?
我通过仪器运行应用程序,我没有看到任何泄漏,直到创建地图视图,应用程序始终以大约3mb Live Bytes运行.创建地图并下载切片后,Live Bytes会跳至~13mb Live Bytes.然后,当我移动地图并放大和缩小Live Bytes连续体时,直到应用程序崩溃在大约40mb Live Bytes.顺便提一下,这是在iPhone 4上.在iPod touch上它甚至更早崩溃.
我正在重复使用注释视图,没有任何泄漏.是否有其他人在使用新的iOS 6地图时看到了相同的高内存使用量?还有,有没有人有解决方案?
在我的应用程序中,我注意到当我按下并弹出一个包含MKMapView内存的视图控制器时,内存使用量会稳步增加.我已经确定MapKit本身存在问题,而不是我的代码.我做了一个测试项目,其中只包含一个导航控制器,我可以反复推送和弹出一个只包含地图视图的视图控制器 - 没有注释或叠加.当我一遍又一遍地推动和弹出视图控制器时,每个推/弹循环的内存使用量增加约0.6 MB.有关为什么会发生这种情况的任何想法?我正在使用ARC.谢谢!
编辑:
我在iOS 5.1模拟器中做了一些测试(我知道在模拟器中有关于性能分析的问题,但我没有任何可用于测试的iOS 5设备),我的结果表明这是一个错误iOS 6; 在iOS 6模拟器中,我看到内存使用量逐渐增加,但在iOS 5模拟器中,内存使用率没有上升.我认为这是Apple新的内部地图的问题.
我希望确保我的应用程序不会在仍然相当资源受限的设备上消耗太多内存.几天前,我使用Instruments来确定我的应用程序使用了多少内存,而Live Bytes则增加了4-8 MB .今天我再次运行仪器,我的Live Bytes大约为30-35兆字节.我不相信我在这两次代码之间对代码做了任何重大更改.
我的应用使用MKMapView自定义图块叠加层.我推迟了很长一段时间更新XCode,所以我怀疑差异可能是我的iOS模拟器几天前还在使用Google而不是Apple地图,直到我升级了XCode.
作为一个小测试,我创建了一个新的测试应用程序,只有一个MKMapView,没有别的,并在其上运行仪器.这个应用程序的Live Bytes通常是50-90兆字节的顺序,即使它没有任何自定义代码 - 我只是拖动'删除MKMapView.
这是否故意代表Apple代表新地图使用这么多内存我不知道.也许地图图块是在应用程序之间共享的,这很好.无论哪种方式,由于大多数早期的建议大约为5-20MB,而且Apple的MKMapView本身消耗50-90MB,因此对于我可以安全使用多少Live Bytes进行合理的近似是很复杂的.
是否有另一个有用的指标,我可以通过使Live Bytes现在没有任何用处?
编辑:看起来像其他人这是一个合法的内存管理问题,并导致应用程序崩溃:iOS6 MKMapView使用大量的内存,到崩溃的应用程序,其他人注意到这一点?