对于大多数app来说,流量消耗最大的就是图片的下载,所以避免图片重复下载是程序员需要解决的难题。下边是我用苹果原声方法写的处理图片重复下载的解决方案,如果您有更好的方案,欢迎交流。
如果是第一次加载图片,我们需要用异步线程把图片下载下来,再把下载好的图片保存到所在视图的数组中,再保存到app的沙盒里。
再次进入页面时,首先判断get的图片的url时候和保存到内存中的url路径是否一样,如果一样,直接显示在页面上,如果内存中没有一样的图片,再去沙盒里边比较,如果沙盒里边也没有相同的url,那么只能去网上下载,如果沙盒有,直接显示在view上。为什么首先去内存中寻找url呢,因为内存中的数据读取的最快,可以使图片最快的显示在view上,但是数组中储存的数据会随着view的disappear而消失,所以此时要去应用的沙盒中读取。如果沙盒中没有,那就是之前并没有下载过,所以需要下载并且保存,代码如下:
最后一定要做的一件事就是在didReceiveMemoryWarning的时候一定要清空数组中的数据,再清空操作队列
[self.imagesDicremoveAllObjects];
[self.queuecancelAllOperations];
用的代码截图,代码就不能复制了,不是我不想,是因为简书对于代码的格式真是太恶心了,为了我自己看着舒服,只能用截图了!