Ios 缓存tableView单元格数据
在我的应用程序中,我使用URL下载了一些图像,并将它们放在Ios 缓存tableView单元格数据,ios,swift,uitableview,uiimageview,custom-cell,Ios,Swift,Uitableview,Uiimageview,Custom Cell,在我的应用程序中,我使用URL下载了一些图像,并将它们放在cell.imageView[indexPath.row](这是一个内置imageView的自定义单元格)。 我一次可以看到两个细胞,我注意到这个方法 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomCell { } 每次显示单元格时都会调用它。因此,我的应用程序继续从服务器下载图像,应用程序
cell.imageView[indexPath.row]
(这是一个内置imageView的自定义单元格)。
我一次可以看到两个细胞,我注意到这个方法
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomCell {
}
每次显示单元格时都会调用它。因此,我的应用程序继续从服务器下载图像,应用程序的速度非常慢
我想知道是否有可能缓存我已经看到的单元格的数据,所以如果我在tableView中向上滚动,我不需要重新下载图像!讲代码我想调用上面写的
func
,只要我向下滚动表格,而不是我已经看到的单元格。你可以,但这需要相当多的工作,所以制作一个库下载/缓存/获取/管理你的图像URL的好人只需将你的图像获取代码与此类别交换即可UIImageview
,这将提供UIImageview.sd\ucode>方法
同样,通过cells实现prepareforeuse()
并使用sd\u cancel
取消获取,您可以,但这需要相当多的工作,因此,在制作库下载/缓存/获取/管理您的图像URL时,善良的人只需将您的图像获取代码与此类别交换为UIImageview
,这就提供了UIImageView.sd\u
方法
此外,使用单元格实现prepareforeuse()
并使用sd\u cancel
取消提取,不要重新发明轮子
看看NSCache,它就像一个可变字典,但它是线程安全的。
NSCache对象在以下几个方面与其他可变集合不同:
NSCache类包含各种自动删除策略,这些策略
确保它不会占用过多的系统内存。这个
如果用户需要内存,系统将自动执行这些策略
其他应用程序。调用时,这些策略将删除某些项
从缓存中删除,最大限度地减少其内存占用
您可以从不同位置添加、删除和查询缓存中的项
线程,而不必自己锁定缓存
与NSMutableDictionary对象不同,缓存不会复制密钥
放入其中的对象
这些特性对于NSCache类是必需的,就像缓存可能需要的那样
决定在幕后自动异步地改变自身
如果调用它以释放内存
您可以使用图像的URL为图像设置关键帧,并将其作为值。
.
张贴。不要重新发明轮子
看看NSCache,它就像一个可变字典,但它是线程安全的。
NSCache对象在以下几个方面与其他可变集合不同:
NSCache类包含各种自动删除策略,这些策略
确保它不会占用过多的系统内存。这个
如果用户需要内存,系统将自动执行这些策略
其他应用程序。调用时,这些策略将删除某些项
从缓存中删除,最大限度地减少其内存占用
您可以从不同位置添加、删除和查询缓存中的项
线程,而不必自己锁定缓存
与NSMutableDictionary对象不同,缓存不会复制密钥
放入其中的对象
这些特性对于NSCache类是必需的,就像缓存可能需要的那样
决定在幕后自动异步地改变自身
如果调用它以释放内存
您可以使用图像的URL为图像设置关键帧,并将其作为值。
.
邮局