以tableViewController为例:
- 因为每次cell需要显示都需要重新调用-(UITableViewCell)tableView:(UITableView)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ }方法
- 所以每次调用tableView显示行的数据源的方法时,如果需要从网络加载图片,就需要将加载图片的耗时操作放在子线程上执行,从网络上下载的图片可以以键值对的形式保存;在定义可变字典中,将每张图片的唯一的路径作为键,将从网络上下载下来的图片作为值保存在内存缓存中,这样每次滑动tableView cell重用时就直接判断内存缓存中有没有需要的图片;如果有就不需要下载,在没有出现内存警告或者程序员手动清理内存缓存时,就直接从内存缓存中获取图片。
- 为了每次退出程序,再次进入程序时,不浪费用户的流量,需要将第一次进入程序时加载的图片保存到本地沙盒缓存文件中,在沙盒中保存的图片数据没有被改动之前,下次开启程序就直接从沙盒的缓存文件中读取需要的显示的图片,并将沙盒缓存文件夹(Cache)中保存的图片保存到内存缓存中,这样用户每次滑动tableView cell重用时直接从内存缓存中读取而不是从沙盒中读取,节约时间。