0

UITableViewCellに画像をロードしています。画像のサイズはそれほど大きくありません。それぞれのサイズはおそらくわずか 6 KB です。

ただし、500行あります。スクロールすると、最初はゆっくりと起動し、メモリ警告メッセージが表示されますが、さらに数回スクロールすると、アプリがクラッシュします。計測器も使用しましたが、スクロールするにつれてメモリ使用量が増え続けていることがわかります! それがdequeueReusableCellWithIdentifier:CellIdentifier適切に機能していない可能性がありますか、それとも画像を「ゼロ」にする必要があるのでしょうか?!

ちなみに、私は自分のデバイスの他のアプリをすべて閉じており、iPod Touch には 1.5 GB 以上の空き容量があります。

セルを構成するためのコードは次のとおりです。

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

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    int cellNumber = indexPath.row + 1;
    NSString *cellImage1 = [NSString stringWithFormat:@"c%i.png", cellNumber];
    UIImage *theImage = [UIImage imageNamed:cellImage1];

    [cell.imageView setImage:theImage];

    return cell;
}
4

1 に答える 1

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

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

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

何が起きてる?同じメモリを 2 回再割り当てしています。

于 2012-07-06T10:18:54.010 に答える