【问题标题】:Table view cells are not deallocated after tableview referencing them is deallocated表视图单元格在引用它们的表视图被释放后不会被释放
【发布时间】:2019-07-26 20:54:51
【问题描述】:

如何释放表格视图单元格(或集合视图单元格)?我有一个简单的UIViewController,里面有UITableViewUITableViewCell 通过UIStoryboard 添加为原型单元。 UIViewController 已正确释放,但单元格未正确释放。表格视图单元的实例仍然存在于 Xcode 的内存图中。它必须被释放,因为引用它的 UITableView 已被释放。

【问题讨论】:

  • 添加您的代码,以便我们查看。你的UITableView 是弱引用吗?
  • @BoldLion 代码只包含简单的UITableView 数据源方法,只需对单元格进行出队即可。它没有添加任何额外的功能。是的,UITableView 是一个弱引用。

标签: ios swift uitableview memory-leaks


【解决方案1】:

当单元格从屏幕上移出时,它们会被表格缓存。没有全局缓存。

只要您在“cellForRowAtIndexPath”中返回一个自动释放的单元格,当 tableView 被销毁时,该单元格就会被销毁。

表格视图不太倾向于分配和取消分配表格视图单元格。创建单元格的成本很高,因此它们会在可能的情况下被重复使用,而不是在它们离开屏幕时被丢弃。

UITableViewDelegate 方法-tableView:didEndDisplayingCell:forRowAtIndexPath: 是更新单元格以取消下载或其他不再相关的操作的更好位置。

你现在就去,度过美好的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 2013-12-15
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多