【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-沙盒缓存 Objective-C语言】
一、沙盒缓存

1.下边我们来看沙盒缓存,但是,我们先要来看一下,为什么要学这个东西,为什么要做这件事情,好,我们先来运行一下我们的程序,

好,图片,先是从网络上下载,

下载完成之后,就保存到了内存中,保存到我们那个图片的缓存池中来,现在,我把程序关掉,我再开,图片会从哪儿来,从内存来,还是重新下载,

重新下载,是不是又要费用户的流量,我们来看,我把程序关掉,然后,运行,是不是重新下载了一遍,之前我是不是运行过这个程序了,

我运行过一次程序,我是不是把图片下载过一遍了,现在用户重新把这个程序打开,又重新下载了一遍,你再关再开,又要重新下载,浪费用户的流量,所以我们要去解决这个问题,我们帮着用户去省点儿流量,
那图片下完了之后,应该放到哪儿呢,放到本地,放到本地的哪儿,沙盒里边来,所以,当图片下载完成之后,我们要把图片放到沙盒中,
沙盒其实就是我们应用中的一些文件夹,有几个文件夹,

1)Documents:存放由应用程序生成的文件或数据,并且这些应用和数据,将来会自动去同步到iCloud,换一个手机,重新安装这个软件,它会把iCloud上的数据下载下来,不要保存从网络上下载的文件,从网络上下载的文件太大了,放到这个里边,你又不去清理,特别消耗硬盘空间,这个文件夹,iTunes会备份,iCloud备份和iTunes备份有什么区别,iCloud备份在苹果的服务器上,iTunes备份在当前的电脑上,
2)Library:里边有两个文件夹,一个是Cache,一个是Preferences(用户偏好),Cache是什么,缓存,临时把它存起来,所以我们Cache里边放的是一些临时文件,后续需要使用,Cache里边放什么,就是放我们从网络上下载的那些图片,离线地图数据,因为将来还会用,所以系统不会自动清理此目录,程序员需要提供清理此目录的功能,iTunes不会备份,
Library/Preferences:存储用户的一些偏好设置,比如说是否推送消息,这件事情你可以记录到用户偏好里边来,iTunes会备份这里边的内容,
3)tmp:这是真正的临时文件,保存临时文件,可能后续不需要使用,当时那一瞬间要用,比如说12306升级的时候,下载一个压缩包,下载完成这个压缩包之后,一解压,还要吗,不要了吧,这个压缩包我们就可以放在tmp文件夹里边,tmp里边保存的文件,不需要我们自己来清理,系统会自动清理,当系统的磁盘空间不足、或者系统重启的时候,会自动清理tmp文件夹,iTunes不会备份,
2.这是我们复习沙盒目录,下边我们要把图片保存到沙盒里边,保存到哪个文件夹,Cache,保存我们网络上缓存的这些图片,那我们想要把图片放到这个目录里边来,首先我要知道这个目录的路径,我们要用代码的方式,获取它的路径,会获取吗,顺便我们把Documents,和tmp,这个路径也获取一下,

因为我们将来可能会在很多地方,都要往这个不同的沙盒路径里边去存数据,我们是不是每次都要写一段代码获取这个路径,我们可以把它写一次&#x