SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?

Posted

技术标签:

【中文标题】SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?【英文标题】:Does the List in SwiftUI reuse cells similar to UITableView?SwiftUI 中的 List 是否复用类似于 UITableView 的单元格? 【发布时间】:2019-06-18 18:57:12 【问题描述】:

我正在使用 SwiftUI 创建一个动态列表。 SwiftUI List 容器是否重用了类似于UITableView 的单元格?

【问题讨论】:

你为什么要问?我认为SwiftUI 承诺表现出色;是否以这种特定方式重用视图是一个实现细节。 检查内存图——确实如此 很抱歉插话,但我只是链接到这个问题,因为似乎其他人可能想知道一些接近的事情。我专注于“动态”——状态(所以将“at 符号”解释为用户!)、数组更新等——实际上问题可能更关注“可重用”。我说(至少现在)别说了。 @Matteo_Pacini 已经给出了很多关于 SwiftUI 和 Combine 的 great 答案。也许他可以再给出一个?我肯定会赞成。 查看这两个答案以获取有关此主题的更多信息:***.com/a/56652113/5623035 - ***.com/questions/56654877 【参考方案1】:

是的,List 正在重用它的 ListCoreCellHosts,就像 UITableView 重用它的 UITableViewCells 一样。

参考:

使用 Xcode 调查内存使用情况表明,当项目的数量超过 List 可以同时出现时,它会尽可能多地显示并在它们从顶部或底部被遮挡时重用它们list.

通过跟踪单个单元内存地址,您可以看到它被反复重用。 另一个令人兴奋的消息是ListCoreCellHost 使用了一个托管视图,它可能在内部引用UIKit。 (不知道,因为它缺乏文档)

【讨论】:

以上是关于SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Navigation 类似于 Slack

如何知道应用程序是不是从 SwiftUI 中的后台删除?

SwiftUI - 如何将文本视图与另一个文本视图垂直对齐,以制作类似于正确对齐的表格?

在 SwiftUI 中更改 UIView 背景颜色

SwiftUI 的 List/ForEach 视图中是不是可以有一个 Button(action: -)

List 中的可重用性支持 - SwiftUI