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セルを追加する場合などです。セルなど、それは私にdidReceiveMemoryWarningを与えます、あなたは問題に対処するための良い習慣がありますか

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に、subViewの枠などを設定します。
  • – cellForRowAtIndexPath:作成してデータを設定するだけです。

適切な方法で実装すれば、テーブルビューは何行あってもメモリ警告を表示しないはずです..!

tableViewCells のカスタマイズについてまだ不明な場合は、Google で検索してください。たくさんのチュートリアルが見つかります。

幸運を..!

于 2013-02-26T09:15:04.017 に答える