0

以前はデフォルトのタイトルと詳細ラベルを使用UItableViewCellしていましたが、警告なしで正常に機能しました。現在、テーブル ビュー セルをカスタマイズし、ラベルを使用してサブビューとして追加し、連絡先のファイルからも画像を取得しています...今、私は頻繁にメモリ警告を受け取り、クラッシュしています。以下のような識別子を再利用していますが、まだ警告が表示されています..何が問題なのですか? 何か案が...

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle        reuseIdentifier:CellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Get the path of the file.
    get__path(file_path);

    NSString *fle_path = [NSString stringWithUTF8String:file_path];

    fle_path = [fle_path stringByAppendingFormat:@"%c%ld%s",'/',obj->user_id,".jpg" ];

    NSString *combined_name = [NSString stringWithCString:obj->combined_name encoding:NSASCIIStringEncoding];
    NSString *email = [NSString stringWithCString:obj->email encoding:NSASCIIStringEncoding];

    CGRect rect = [cell frame];
    UIImageView *img_view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 55, 55)];
    UILabel *name_label = [[UILabel alloc] initWithFrame:CGRectMake(60, 7, rect.size.width-70, 20)];
    UILabel *detail_label = [[UILabel alloc] initWithFrame:CGRectMake(60, 27, rect.size.width-70, 20)];

    // Set Image
    UIImage *cellImage = [UIImage imageWithContentsOfFile:fle_path];

    if (cellImage != nil) {
        [img_view setImage:cellImage];

    }

    // Set name

    [detail_label setFrame:CGRectMake(60, 18,rect.size.width-70, 20)];
     name_label.text = combined_name;

     name_label.font = [UIFont fontWithName:@"Georgia-Italic" size:18];
        detail_label.text = email;

     [cell_italic.contentView addSubview:img_view];
     [cell_italic.contentView addSubview:detail_label];

     cell_italic.selectionStyle = UITableViewCellSelectionStyleNone;

     rect.size.height = 55;
     [cell_italic setFrame:rect];
     return cell_italic;

上記のラベルのメモリをいつ解放する必要がありますか?

4

1 に答える 1

1

セルとcell_italicは2つの異なるタイプのセルです。セルはデフォルトのUITableViewCellであり、cell_italicはカスタムセルであるため、UITableViewCellをcell_italicタイプのセルにキャストする必要があります。

あなたはこのようにキャストすることができます:

CustomResultCell *cell; 
 cell = (CustomResultCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

更新1:変更

`UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];`

UITableViewCell *cell =(UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
于 2013-02-05T05:42:43.310 に答える