首页 > 解决方案 > NSString initWithCoder,DequeueReusableCell 处的内存泄漏

问题描述

请在回答之前阅读完整的案例,这里有一个类似的问题。

没有实际答案。

案例如下,

1.我有一个里面UITableView有 3 个原型的。 2.我在委托中使用。 3.使用仪器和内存图,该函数导致Malloc类型的内存泄漏。其中每个单元都泄漏了N个类型的字节UITableViewCellUIStoryBoard
tableView.dequeueReusableCell(withIdentifier:, for:)CellForRowAt
dequeueReusableCellNSString

仪器配置文件看起来像这样。 在此处输入图像描述 并跟踪这30个 Malloc 字节中的每一个字节(每个单元格 1 个)。 在此处输入图像描述

现在我已经尝试过:

首先我认为这个问题与出队中用作标识符的字符串有关,代码看起来像这样

guard let cell = tableView.dequeueReusableCell(withIdentifier: "TransactionHeaderCell") as? TransactionHeaderCell else { return UITableViewCell() } 这很简单,但是我将其保存cellId在a中static var以进行仔细检查,结果是相同的,

其次,我实现了一个类似这样的通用出队函数, 在此处输入图像描述 没有运气,因此我怀疑它与出队的实现方式有关,但更多的东西可能在它自己的单元格中或Foundation我没有得到的工具包中,

旁注:这可能不相关,但UIViewController持有UITableView是 的一部分UITabBarController

标签: iosswiftuitableviewmemory-managementmemory-leaks

解决方案


推荐阅读