- (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个单元格等等,它给我didReceiveMemoryWarning,可以很好地练习处理问题
答案 0 :(得分:1)
您不释放单元格
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
您不会发布视图
[cell addSubview:gview];
[gview release];
答案 1 :(得分:1)
你实施这些事情的方式不对。
– cellForRowAtIndexPath:
中,您可以创建并设置数据。!我认为如果你以正确的方式实现事情,tableview不应该显示任何内存警告,无论有多少行..!
如果您仍然不清楚自定义tableViewCells,只需谷歌它,你会发现大量的教程。
祝你好运..!