如何清除地图图块的MKMapView缓存?

时间:2010-12-07 14:35:47

标签: iphone caching ios mapkit mkmapview

我正在开发基于MKMapView的iPhone / iPad地图应用程序,该应用程序覆盖我自己的基本基本地图,即使在用户离线且无法访问Google的地图图块服务器时也能提供一些有限的功能。

此功能正常运行 - 但我在每次新构建后都很难对其进行测试,因为我无法找到刷新/重置iOS地图图块缓存的方法。 iOS缓存甚至可以在电源循环和iOS设备重启后幸存下来。我过去放大的任何地方都会使用先前测试会话中的内存块进行渲染。

有没有办法强制iOS刷新其地图缓存?现在,我能想到的唯一选择是每次我需要进行测试时重新刷新操作系统。

谢谢!

BTW:这几乎是this question的副本,但在这种情况下,问题不是使用空缓存进行测试,而是释放内存。那里接受的答案集中在RAM问题上,而不是我在这里遇到的问题。

3 个答案:

答案 0 :(得分:5)

在创建NSURLConnection

的任何实例之前,请尝试将MKMapView缓存大小设置为零
    NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];

这可能会使您的连接停止存储缓存数据,因为缓存剩余大小始终不足

答案 1 :(得分:1)

我偶然发现了这个问题,这肯定是一个有趣的问题。显然,MKMapView正在将磁贴保存到磁盘的某个位置(因为它可以在重新启动后继续存在)。我想知道一个潜在的解决方案是1)找到保存缓存切片的位置,然后2)在应用程序启动时以编程方式删除该缓存。这将需要越狱设备为您提供应用程序沙箱外的文件访问权限。显然不适合分发,但测试可能是可以接受的。

那就是说,当我遇到这个问题时,我最终只是实现了我自己的平铺地图视图并运行了一个可达性测试,以确定是否显示谷歌地图或我的离线模式。

答案 2 :(得分:1)

我们还没有找到从应用程序中清除MKMapView缓存的方法,但您可以在Settings \ General \ Reset上“重置所有内容和数据”。 虽然这并不理想,但它比“重新刷新操作系统”要快得多,实际上它只需要几分钟。 重置后,您还设置了设备并重新加载应用程序,但这也需要几分钟。