在他们的 iOS 6 应用程序中使用 map 的其他人是否注意到内存使用量极高,以至于反复收到内存警告,甚至导致应用程序崩溃?
我已经通过仪器运行了该应用程序,并且没有看到任何泄漏,并且在创建 map View 之前,该应用程序始终以大约 3mb 实时字节运行。创建 map 并下载图 block 后,Live Bytes 会跃升至 ~13mb Live Bytes。然后,当我四处移动 map 并放大和缩小 Live Bytes 时,Live Bytes 会不断攀升,直到应用程序在大约 40mb Live Bytes 处崩溃。顺便说一句,这是在 iPhone 4 上。在 iPod touch 上,它崩溃得更早。
我正在正确地重用注释 View 并且没有任何泄漏。其他人在新的 iOS 6 map 中看到同样的高内存使用情况吗?另外,有没有人有解决办法?
最佳答案
经过大量的尝试和测试不同的想法(这里提到了其中的一些),对我有用的最终解决方案如下。
我没有在应用程序中根据需要创建新的 MKMapView,而是向我的 AppDelegate 添加了一个 mkMapView 属性,并且只在需要时创建它。一旦它被创建,它就永远存在于 AppDelegate 中,并且我在任何需要的地方重用该单个实例。这确实有助于减少使用的内存量,因为我之前实例化了几个不同的 MKMapView,并且两者都很快消耗了内存。
我还发现,一旦收到内存警告,iOS 6 map 就可以很好地处理释放内存。是的,它在缩放和平移时确实会消耗更多内存,但似乎可以适本地响应内存警告。
我要做的最后一件事是减少我的整体初始内存占用。我注意到我开始的时候比我预期的要高,所以这也导致了我收到的与内存有关的崩溃。一旦我降低了初始占用空间,让 MKMapView 在内存警告期间处理释放它的内存,并确保我只有 1 个 MKMapView 实例可以在整个应用程序中重用,一切都运行良好。
关于memory - iOS6 MKMapView 使用大量内存,导致应用程序崩溃,其他人注意到了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641658/