应该在UITableViewCell中调用deinit吗?

时间:2016-05-10 19:17:58

标签: ios swift uitableview

我正试图在我的swift应用程序中找到内存问题。通过检查deinit是否被调用(例如代理中的强引用)找到了一些但是检查UITableViewCell或UICollectionViewCell我没有看到deinit从未被调用。

我使用了一个非常简单的单元格:

  • 一些IBOutlets
  • awakeFromNib(角半径)的设置视图
  • 从tableView调用的setClient函数,其客户端对象用于设置视图
  • prepareForReuse重置某些视图部分

更新

检查tableView是否正在调用它的deinit,但事实并非如此。所以UIViewController调用它的deinit但是tableView仍在内存中。

更新2:

发现了这个问题。一个后卫让我们在辅助函数中保持对tableView的强引用。

1 个答案:

答案 0 :(得分:6)

由于tableview单元格被重用,如果tableview本身被删除,它们往往只会被删除。因为即使它们现在没有被使用,tableview也会保持它们存活,以防它们被重用。