相关疑难解决方法(0)

在cellForRowAtIndexPath处从CoreData加载图像会减慢滚动速度

我正在开发一个UITableView,它非常像iOS的原生Photo应用程序:它有很多行,每行有4个图像缩略图.(即每个UITableViewCell都有4个UIImageViews)所有缩略图都是从Core Data加载的.

我已多次修改我的实现,我可以看到性能改进,但仍然无法像Photo应用程序那样顺利滚动.

我需要建议如何正确缓存照片以获得最佳性能.这是我试过的:

1.我的第一次尝试(滚动时非常滞后)

  • 图像以CoreData中的Transformable类型存储.
  • 在cellForRow函数中,每个图像都是从CoreData中即时获取的.

2.第二次尝试(更快,但滚动时仍然有点滞后)

  • 图像与二进制数据类型一起存储,CoreData中勾选了"外部存储"选项.
  • 在cellForRow函数中,每个图像首先从Core Data加载,然后存储到内存中的NSCache中,因此下次cellForRow触发时,如果可用,我们将直接使用NSCache中的UIImage.

使用NSCache缓存从CoreData加载的图像后,滚动显然更快,但由于在NSCache中尚不可用时仍需要从CoreData加载图像,因此滚动仍会不时地生涩.

所以,必须有一个更好的方法,我可以将所有图像预加载到内存中,但由于可能有大量或多行图像,所以我根本没有计划预加载图像.

我还能做些什么来在cellForRowAtIndexPath中更快地加载图像?

objective-c uitableview

10
推荐指数
1
解决办法
7275
查看次数

标签 统计

objective-c ×1

uitableview ×1