2

その中に aviewをドラッグしUITableViewたものと、2 つUIImageViewの s があります (1 つ目は背景画像を表示し、2 つ目はビューの上部に画像付きの非常に小さなタイトルを表示するだけです)。それらはすべてweakプロパティに設定されています。tableView には 495 行あり、各セルに画像が読み込まれます。セルを構成するためのコードは次のとおりです。

- (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];


    UIView *bgColorView = [[UIView alloc] init];
    [bgColorView setBackgroundColor:[UIColor brownColor]];
    [cell setSelectedBackgroundView:bgColorView];

    return cell;
}

私はsegues を使っているので、delegate メソッドは必要ありません。(この質問にも関係ありません)。問題は、スクロールがスムーズだということです。しかし、スクロールが速すぎると遅くなり、アプリがクラッシュする可能性があります。セルにロードされた png 画像は大きなサイズではなく、それぞれが約 5KB です。デキュー作業が効率的に行われていないようです。速度が遅くなり、メモリ警告メッセージが表示され、クラッシュが発生します。私にできることはありますか?(ビューには他に何もありません)

更新:コードのこの部分も削除しようとしました:

UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor brownColor]];
[cell setSelectedBackgroundView:bgColorView];

だめ!

4

2 に答える 2

4

UIImage imageNamed画像をキャッシュし、メモリを解放しないため、おそらくメモリ警告とクラッシュの原因となります。多数の画像を扱う場合は、通常、imageWithContentsOfFileまたはなどの別の方法で画像をロードすることをお勧めしますimageWithData

于 2012-07-08T05:41:51.020 に答える
0

コマンドの後にイメージを解放してみてくださいsetImage。これは役に立ちますか?

于 2012-07-08T05:44:39.813 に答える