获取动态tableview单元格高度和自动释放

时间:2014-09-12 07:28:24

标签: ios objective-c uitableview

我正在尝试像这样设置动态表格视图单元格高度。在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并且永远不会减少。这意味着有内存使用。这是对的吗?什么是最好的方法?

enter image description here

2 个答案:

答案 0 :(得分:2)

是的,这些单元格会自动释放。

更好的方法是

float cellHeight = cell.cellHeight;
cell = nil;
return cellHeight;

答案 1 :(得分:0)

您不应在cellForRowAtIndexPath中使用heightForRowAtIndexPathcellForRowAtIndexPath将尝试重新使用已创建的单元格,如果有任何适合当前情况,如果不是表格视图将创建新单元格,这个新单元格将永远不会被使用,但他们仍然使用内存,这就是为什么你的记忆不不会减少。

我建议您为TitleCellalloc创建一个成员变量,并在heightForRowAtIndexPath中使用相同的单元格(在其上设置正确的值并计算高度)