有人能告诉我在UITableView
中使用静态和动态单元格之间在性能/内存使用方面的权衡吗?
这是我的情况:我有一个TableView
,有6个不同的部分。第一部分是我的tableView中唯一一个部分,每次加载视图时都会保存不同数量的单元格,具体取决于应用程序的当前状态。即我已在界面构建器中为该部分声明了12 static cells
,但是我只显示了一定数量的cells
,具体取决于用户与应用程序的交互。其他5个tableView
部分都包含永不更改的UISwitches
和textFields
。
所以说我为第一部分静态分配了50 cells
,但仍然只显示其中一半,具体取决于应用的状态。我希望能够显示最多50个cells
。这将如何影响我的应用程序的速度或性能?每次动态完成整个tableView
并重新绘制其他部分的switches
和textFields
会带来更好的应用程序性能吗?
答案 0 :(得分:2)
在这种情况下,UITableView本身只与性能相关。真正的问题是如何以及何时分配新单元格。
如果您的静态单元格的内容永远不会更改,并且您使用界面构建器(néeInterfaceBuilder)创建它们,您将看到该分配仅发生一次,通常在-viewDidLoad
中,并且在该生命周期中表(或至少直到-viewDidUnload
)这些单元格将存在,不需要重新分配。
但这是一种权衡。现在您的单元格加载速度更快,但您的应用程序将拥有更多内存。您只需根据具体情况决定这是否会显着减慢您的应用程序,在这种情况下,您可能希望在数据源单元格获取方法中懒惰加载静态单元格的典型“动态”样式