SDWebImage 面试题

614 阅读1分钟

for 循环10000次调用sd_setImageWithURL是什么效果

结论

没有缓存时(磁盘内存):
图片一直不展示,直到第9999次下载展示
有缓存时(磁盘内存都有):
同上逻辑

原因

sd_internalSetImageWithURL方法中会调用[self sd_cancelImageLoadOperationWithKey:validOperationKey]方法,在这个方法中会判断是否已添加过。

image.png

sd_cancelImageLoadOperationWithKey中进行判断,确认是否取消

image.png

WebCacheOperation分类中查找SDOperationsDictionary(NSMapTable)

image.png

当第一次下载时,会在UIImageView对象上添加 operation

image.png

再次下载时,会判断是否有重复的操作,key实际上是默认的 UIImageView,有则会取消原来的

image.png