AFNetwork SDWebImage
2021-05-19 本文已影响0人
云无心
NSOperation,AFN用Operation可以实现
可以随时取消已经设定要准备执行的任务,已经执行的除外
可以跨队列设置操作的依赖关系
可以设置队列中每一个操作的优先级
最大操作并发数(GCD不好做)
继续/暂停/全部取消
跨队列设置操作的依赖关系
SDWebImage复用cell下载逻辑 https://www.jianshu.com/p/bf998b2538b9
解决tableView复用错乱问题:每次都会调UIImageView+WebCache文件中的 [self sd_cancelCurrentImageLoad];
图片的下载操作放在一个NSOperationQueue并发操作队列中,队列默认最大并发数是6
每个图片对应一些回调(下载进度,完成回调等),回调信息会存在downloader的URLCallbacks(一个字典,key是url地址,value是图片下载回调数组)中,URLCallbacks可能被多个线程访问,所以downloader把下载任务放在一个barrierQueue中,并设置屏障保证同一时间只有一个线程访问URLCallbacks。,在创建回调URLCallbacks的block中创建了一个NSOperation并添加到NSOperationQueue中
下载的核心是利用NSURLSession加载数据,每个图片的下载都有一个operation操作来完成,并将这些操作放到一个操作队列中,这样可以实现图片的并发下载。