1

如果我们给所有单元格赋予相同的标识符,则消失单元格使用出现单元格的内存。意味着当我滚动表格视图时内容将重复。但是如果我们给出 diff 标识符,那么每个单元格都会有自己的内存位置并完美地显示数据。

现在假设我在表格视图中加载了 1000 条或更多记录。如果我给出不同的标识符,内存中会有很多分配。那么有没有什么解决方案可以以最少的内存分配完美地显示数据?

这是我定义单元格标识符的方式:

-(UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellIdentifier = [NSString stringWithFormat:@"%d%d",indexPath.section,indexPath.row];
    UITableViewCell *Cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (Cell == nil) 
    {
        Cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                      reuseIdentifier:cellIdentifier];
    }
}
4

2 回答 2

2

您遇到的问题是由于您不正确地使用单元标识符引起的。对于要重用的所有单元格,单元格标识符应该相同。看看这个模板,它应该解释正确的方法:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellIdentifier = @"MY_CELL";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
        // everything that is similar in all cells should be defined here
        // like background colors, label colors, indentation etc.
    }
    // everything that is row specific should go here
    // like label text, progress view progress etc.
    return cell;
}

顺便提一句。使用驼峰式命名您的变量,大写名称用于类名。

于 2012-05-04T10:17:45.293 回答
1

您应该清除出列单元格的内容,例如清空标签等。如果您为每个单元分配单独的内存,您将很容易内存不足。完美的内存管理仍然是重用单元格。

于 2012-05-04T11:00:04.303 回答