【发布时间】:2012-03-11 20:50:24
【问题描述】:
我有这个带有一堆叠加层的地图视图。当我点击主页按钮并重新打开它时,所有叠加层都会消失一秒钟,然后立即重新出现。起初我以为是我的代码在做这件事,但我几乎在所有地方都设置了断点,而且我的代码似乎都没有触发“重置”。甚至 mapView:viewForOverlay: 在覆盖重新出现之前也不会被调用。
我认为这可能是MKMapView 的必然行为,但 Maps.app 似乎也没有这样做 - 如果您计算路线并退出/重新打开应用程序,则叠加层会一直保留在那里时间。
我在想也许 MKMapView 在默认情况下会在退出时清除其所有注释/覆盖,因此在保持后台运行时占用更少的内存。有没有办法避免这种情况?有点像 Maps.app 吗?
编辑:here's a small project 我放在一起来演示这个问题。只需在模拟器中启动它,单击主页按钮,然后重新打开它。您会看到地图路径叠加层消失片刻。
【问题讨论】:
-
你在用arc吗? arc 会在它们不使用时立即释放对象,因此在进入背景时它们会消失,一旦使用它们就会重新出现。这只是一个想法,因为我有一些在后台切换时重置的视图。
-
我正在使用 ARC,但我的控制器在 mapView 上保存了一个
strong引用,它本身应该在其叠加层上保存一个strong引用吗? -
我的 MapKit 应用程序做同样的事情,我认为这就是它的方式。为什么会出现这个问题?
-
@shawkinaw 应用程序重新启动时,没有理由让叠加层闪烁。想象一下,如果 tableViews 的内容在应用重新启动时会闪烁;它会被广泛报道并可能很快得到修复。地图叠加层不太常见,因此该错误未被注意到。
标签: iphone ios mkmapview mapkit