大多数时候,开发人员都在询问如何过滤旧的缓存位置,但是我对相反的事情感兴趣 - 如何保留和获取旧位置:) 这是我的情况:我的应用程序中有天气屏幕,我正在下载天气预报对于当前位置。应用程序一启动,我就会以 1 公里的精度开始标准位置更新,并将接收到的位置保存在我的定位器类私人成员中。如果应用没有收到任何位置更新,那么它需要显示任何已知的先前位置——比如从 [CLLocationManager 位置] 中抓取一个。
问题出在 iPad2 上。我的应用程序在没有设备重启的情况下运行了大约一周,但 [CLLocationManager location] 非常频繁地返回 nil。例如,我昨天在 iPad 上打开了 google maps 应用程序并收到消息“无法确定位置”,因此 [CLLocationManager location] 在我的应用程序中返回 nil。然后我在谷歌地图应用程序中按下位置箭头图标,然后谷歌地图应用程序显示我当前的位置。此外,[CLLocationManager location] 在我的应用程序中返回了某个位置。但是,今天仍然存在同样的问题 - [CLLocationManager location] 再次返回 nil,所以我猜 CLLocationManager 会在一段时间后丢弃位置缓存,如果您不使用设备移动,那么您将不会获得任何已知的先前位置。任何想法如何解决这个问题并强制 CLLocationManager 检索任何位置(如果它为零)?