ios NSURLSession(默认配置)不缓存请求
我已配置会话:ios NSURLSession(默认配置)不缓存请求,ios,nsurlsession,nsurlcache,nsurlsessiondownloadtask,nsurlsessionconfiguration,Ios,Nsurlsession,Nsurlcache,Nsurlsessiondownloadtask,Nsurlsessionconfiguration,我已配置会话: - (void)createSession { NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; sessionConfig.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad; _session = [NSURLSession sessionWi
- (void)createSession {
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
_session = [NSURLSession sessionWithConfiguration:sessionConfig];
}
然后,我尝试向服务器发出请求(从Twitter的API获取图像):
映像正在正确加载和设置,但当我关闭计算机上的Internet连接(未终止应用程序,它仍在运行…)时,我得到的UIImageView为空-因此会话尝试从服务器下载映像,但不使用任何缓存。是什么导致了这个问题?
我尝试使用共享会话,或使用预定义的磁盘和内存空间配置共享缓存,但没有任何帮助。
iOS模拟器,iOS 8+缓存与下载任务不同。 下载的数据存储在临时目录中,如果需要永久保存,则需要将其移动到应用程序路径。 其中,在下一个请求中使用as缓存数据(基于响应或设置缓存策略)。
注意:操作系统在某些情况下可以删除缓存数据是的,可能重复,看起来像是一个bug,但我想看看谁成功地使用了上述技术。
NSURL *url = tweet.mediaUrl;
NSURLSessionDownloadTask *getImageTask =
[_session downloadTaskWithURL:url
completionHandler:^(NSURL *location,
NSURLResponse *response,
NSError *error) {
UIImage *downloadedImage = [UIImage imageWithData: [NSData dataWithContentsOfURL:location] ];
dispatch_async(dispatch_get_main_queue(), ^{
//setting image to a view
});
}];
[getImageTask resume];