我有一些简单的代码(从SO复制和粘贴)将 KLM(基于 XML)文件加载到 iOS 的文档目录中。然后我在地图上显示加载的数据。
我意识到这不是下载和保存文件的好方法 - 似乎建议使用 NSUrlConnection 以便管理加载。但我对这一切都很陌生,我想先了解一下这种情况下发生了什么。
这是代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"index.kml"];
// Download and write to file
NSURL *url = [NSURL URLWithString:@"http://www.domain.co.uk/kml-resource..."];
NSData *urlData = [NSData dataWithContentsOfURL:url];
[urlData writeToFile:filePath atomically:YES];
NSURL *fileurl = [NSURL fileURLWithPath:filePath];
kmlParser = [[KMLParser alloc] initWithURL:fileurl];
.....
我的问题是:
- dataWithContentsOfURL 连接/下载时会发生什么 - 应用程序是否只是冻结并变得无响应?
- 如果我第二次在飞行模式下运行我的程序,它似乎仍然可以工作。它什么时候决定跳过下载和 writeToFile 是可以的?
- 有谁知道它是否在 dataWithContentsOfURL 和服务器之间使用任何缓存?IE。我能否确定如果我收到响应,它是新数据,并且不只是位于 safari/iOS 的缓存中。
非常感谢