gpt4 book ai didi

ios - 在 iOS 上,如果表格只有 20 或 25 行,是否有办法强制创建 UITableViewCell?

转载 作者:可可西里 更新时间:2023-11-01 05:31:15 24 4
gpt4 key购买 nike

简短的问题是:我们能否强制为“未显示的单元格”(例如,单元格 8 到 25)调用 tableView:cellForRowAtIndexPath,以便如果表格只有 20 或 25 行,我们从服务器预取图像并且从不重复使用单元格?


详情:我认为tableView:cellForRowAtIndexPath的机制主要是为了保留内存,尤其是在iPhone或者iPod Touch上,这样如果一个table有1000行,不会有1000个UITableViewCell对象(UITableViewCellUIView的子类),会占用大量内存,但只有10个对象左右,并且这些对象可以“重用”,因此可以将内存使用保持在较小的范围内。

但是如果每一行都在服务器上获取了一个图像怎么办?我们可以让 tableView:cellForRowAtIndexPath 获取前 7 个图像并显示表格,然后强制渲染第 8 到 25 个单元格,而不是使用单独的线程构建单独的图像缓存,并且永远不会调用 dequeueReusableCellWithIdentifier(因此我们有 25 个这样的 UITableViewCell 对象并且不会重复使用它们)。如何做到这一点?这实际上是一个实用且简单的解决方案吗?

最佳答案

缓存图像几乎不属于 View 层;从服务器检索这些图像也不会。

您应该采用您在帖子中描述的方法 - 将图像与表分开缓存,然后从该图像缓存中检索这些图像。

您可以构建一个 ImageProvider 类,根据其键为您提供图像,并使用该提供程序构建表格单元格。反过来,ImageProvider 决定是从服务器加载图像还是从缓存中加载图像,从 TableView 中隐藏详细信息。

这种方法为您提供了极大的灵 active :如果您决定通过在设备本地缓存图像来节省网络流量,使用单独缓存的方法可以让您在不干扰 View 层的情况下做到这一点。它还允许您通过将缓存的图像刷新到临时文件来节省内存,例如,在收到内存不足警告时。

关于ios - 在 iOS 上,如果表格只有 20 或 25 行,是否有办法强制创建 UITableViewCell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com