假设你正在谈论UIImageView
类别,是的,它确实解决了许多问题困扰着天真的异步图像检索问题,即:
如果电池插入上面或下面的单元格在问题中,NSIndexPath
已更改的事实不会影响所讨论单元的image
的异步更新。
如果您快速滚动到第100行,因为在重用单元上调用af_setImageWithURL
,以前与此重用单元关联的先前行的请求将被取消。的这个
AlamofireImage还提供图像缩放程序中,示出了用于细胞的缩略图图像时,这是很重要的。如果您不调整图像大小,如果使用大型资源(特别是在可以看到许多缩略图图像的收集视图中),则可能会产生过多的内存使用情况。
在该AlamofireImage可能不是正常,因为我们想处理UITableViewCell
问题方面,它包括:
关于缓存,AlamofireImage依赖于底层NSURLCache
而不是做自己的缓存通过NSCache
或本地永久存储。虽然我理解作者为什么这样做(有一定的直观上诉,只要NSURLCache
应能够优雅地做到这一点),你应该知道NSURLCache
可能有问题,只缓存根据记录不佳的规则(如果资源超过总高速缓存大小的5%,不会被缓存;如果HTTP标头不正确,则不会高速缓存等)。所以在缓存问题上必须小心。
关于预热(预取与可见行相邻的单元格的图像),AlamofireImage在这里没有太多的工作。您可能想要查看与可见行相邻的单元格的一些低优先级请求管理,以便可见单元格的性能不会受到负面影响,但也可以在用户滚动时与这些行关联的图像已经存在。
底线,这是一个夸张地说:“你不用担心电池再利用的东西”使用UIImageView
类别时。您仍然需要仔细设计您的单元复用逻辑,例如:
- 确保您没有绕过图像视图更新的任何路径,即使相关行可能没有要显示的图像;
- 确定是否需要调整图像大小;
- 确认
NSURLCache
在您的情况下正确缓存;
- 决定是否要创建和缓存缩略图;
- 等等
但是这是事实,一个良好的执行UIImageView
类别可以防止过于简单化的异步图像检索程序的许多陷阱。但它不是银弹。
来源
2016-02-14 18:31:28
Rob
AlamofireImage不会自动避免细胞重复使用问题。 – dan
所以你告诉我,所有这些教程都做错了,这真的很有趣!但是,现在它变得更有意义了...... – Mamouneyya
我不确定你在说什么教程,但如果他们中的一些人做错了,我不会感到惊讶。 – dan