我正在尝试像这样设置动态表格视图单元格高度。在layoutSubviews内部,它将设置cellHeight。
我的问题是,如果我们创建这样的单元格(可能是100行),那些单元格会自动释放吗?还是会留在记忆中?
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.tblInspiration)
{
if (indexPath.section == 0)
{
TitleCell* cell = (TitleCell*)[self tableView:tableView cellForRowAtIndexPath:indexPath];
[cell layoutSubviews];
float height = cell.cellHeight;
cell = nil;
return height;
}
}
}
如果我使用它并且我只返回恒定高度(例如100),则内存使用量为25.如果我使用,则大约为40并且永远不会减少。这意味着有内存使用。这是对的吗?什么是最好的方法?
答案 0 :(得分:2)
是的,这些单元格会自动释放。
更好的方法是
float cellHeight = cell.cellHeight;
cell = nil;
return cellHeight;
答案 1 :(得分:0)
您不应在cellForRowAtIndexPath
中使用heightForRowAtIndexPath
。 cellForRowAtIndexPath
将尝试重新使用已创建的单元格,如果有任何适合当前情况,如果不是表格视图将创建新单元格,这个新单元格将永远不会被使用,但他们仍然使用内存,这就是为什么你的记忆不不会减少。
我建议您为TitleCell
和alloc
创建一个成员变量,并在heightForRowAtIndexPath
中使用相同的单元格(在其上设置正确的值并计算高度)