在做电子书的时候因为考虑到在下载过程中可能因为一些原因取消下载,所以下载操作需要放在后台去下载。
参考SDWebImage源码能够看到里面实现是基于NSOperation来实现
要点一:因为可能需要取消下载所以,继承NSOperation可以实现取消功能,方式重写main方法(我们必须为我们自定义的operation 提供 autorelease pool,因为 operation 完成后需要销毁。)
要点二:通过请求头指定“Range”能够实现从特定位置开始下载。
要点三:通过http的head方法可以获得文件的大小
要点四:用字典存储操作(用URL为Key),避免重复下载
要点五:使用NSUrlconnection下载,在代理回调中用流的方式存储下载的文件,并且设置代理回调到非主线程中setDeleateQueue为新建的NSOperationQueue,会自动开启多线程下载
要点六:NSFileManager的使用判断本地文件大小,然后处理相应逻辑