使用 Web 服务器图像在 UIImageView 上显示图像

Display image on UIImageView using Web server image

提问人:devSimba 提问时间:9/3/2022 最后编辑:The Dreams WinddevSimba 更新时间:9/4/2022 访问量:59

问:

我想在 UIImageView 上显示一个调用 Web 服务器图像的图像。 因为我想立即更换并显示它。

代码如下

NSURL *imageURL = [NSURL URLWithString:urlString];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
webImage.image = [UIImage imageWithData:imageData];

问题是...... 图像一开始显示得很好, 但是如果我用另一个图像替换了 Web 服务器上的图像。(文件名相同,只是文件被替换)它没有改变,仍然显示第一张图像。

请帮帮我...

iOS Objective-C 缓存 UIImageView NSData

评论

0赞 griv 9/3/2022
您是否在使用 NSURLSession?检查您的 cachePolicy。在此处查看更多内容。

答:

0赞 The Dreams Wind 9/3/2022 #1

问题中的代码似乎有缺陷,即您显然在 UI 线程中执行网络请求。这种方法往往会使应用程序 UI 无响应。但是,如果我们把问题归结为“为什么NSData会为同一个URL返回过时的数据?”,那么答案是因为它有内部缓存。缓存逻辑可以通过来自服务器的响应标头(例如 Expires)或使用 NSDataReadingUncached 选项(以抑制任何缓存逻辑)来控制:

NSData *data = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:nil];

评论

0赞 devSimba 9/6/2022
谢谢你的回答!“NSDataReadingUncached”不起作用...所以我使用了 SDWebImage 库。