0
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    PostCount *post=[listArr objectAtIndex:indexPath.row];

    //NSString *CellIdentifier = [NSString stringWithFormat: @"Cell%d_%d_%@_%d",indexPath.section,indexPath.row,post.foreignId,[listArr count]];
    NSString *CellIdentifier = [NSString stringWithFormat: @"Cell_%d_%@",indexPath.row,post.foreignId];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        NSLog(@"indexPath.row++++++++=%d",indexPath.row);

        TimeLineGraphicView *gview=[[TimeLineGraphicView alloc]init];
        gview.tag=indexPath.row+1000;
        gview.delegate=self;

        [cell addSubview:gview];

        int Allheight =[ModelClass returnGraphicViewHeight_timeLine:post];
        gview.frame=CGRectMake(0, 0, 320, Allheight);
        [gview setViewStyle:post];
    }

    TimeLineGraphicView *gview=(TimeLineGraphicView *)[cell viewWithTag:indexPath.row+1000];
    gview.lab_time.text=[ModelClass intervalSinceNow:post.when btime:0];

    //NSLog(@"intervalSinceNow=%@  ",[ModelClass intervalSinceNow:post.when btime:0]);
    //NSLog(@"post.when=%@  gview=%@  gview.lab_time.text=%@",post.when,gview, gview.lab_time.text);   

    return cell;

}

你好,如果我有很多单元格,如果我使用上面的代码,TimeLineGraphicView *gview=[[TimeLineGraphicView alloc]init] 可以增加内存,因为当我加载很多单元格时,例如我首先加载15个单元格,然后添加15个单元格然后添加15个单元格等,它给我做了ReceiveMemoryWarning,你能很好地处理这个问题吗

4

2 回答 2

1

你不释放细胞

 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

你不释放视图

[cell addSubview:gview];
[gview release];
于 2013-02-26T09:03:40.747 回答
1

您实施这些事情的方式不正确。

  • 你为什么不继承 UITableViewCell ?比方说,在您的情况下,为什么不是 "TimelineGraphicTableviewCell" ?
  • 可以在那里完成将“TimeLineGraphicView”作为子视图添加到单元格的 contentView 中。
  • 在自定义类的 layoutSubviews 中设置子视图的框架等。
  • – cellForRowAtIndexPath:您可以创建它并设置数据。!

我认为如果你以正确的方式实现,无论有多少行,tableview 都不应该显示任何内存警告......!

如果您仍然不清楚自定义 tableViewCells,只需 google 一下,您会发现大量教程。

祝你好运..!

于 2013-02-26T09:15:04.017 回答