我在努力想出一个好的解决方案。因此,在我的应用程序中,我有一个加载用户数据的UITableView,每个单元格都有一个配置文件图像UIImageView。因此,每次循环通过单元格时,它都会为每个用户单独下载配置文件图片。出于这个原因,我开始使用NSCache存储配置文件图片。这非常有效,现在滞后已经消失。
然而,如果有人更改他们的个人资料照片怎么办?配置文件图片在每个用户的后端上传。我使用用户ID来引用这些个人资料照片。如果有人更改了他们的个人资料图片,它只会加载我在缓存中的图像,而不是他们的新图像。所以,我想让IOS设备上的整个缓存像每3个小时一样清除一次左右。这将治愈一切。你如何每隔一段时间清除整个NSCache?
TL; DR:
我如何按时间间隔清除应用程序的整个NSCache? (例如:每隔3小时清除应用缓存)
答案 0 :(得分:2)
您可以使用应用委托方法,并在每次用户输入应用前景时执行检查。您可以保留一个变量来保存用户上次打开应用程序的时间,如果当前时间是3个小时,则清除缓存。
如评论中所述,大多数用户不会有3小时的会话。
旁注:大多数用户可能会理解图像没有立即更新,例如,我知道twitter需要一段时间才能更新。在我的应用程序中,我单独保留缓存并在应用程序完全退出时重新下载所有图像。如果您在将图像放入服务器之前压缩图像,这不会损害数据使用情况。