2

画像セルを含むテーブルがあります。インターネットから画像をダウンロードし、ローカル ディスクに保存します。Count = 200. Tableview はこの画像を表示します。コンテンツを一番下までスクロールすると、メッセージ メモリ警告が表示されます... 使用メモリ 250 - 300 mb O_O!!! 保持されない画像へのリンク。

NSString *cellID = @"cellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
...
NSString* imagePath = [arrayContent objectAtIndex:indexPath.row];
UIImage* image = [[UIImage alloc] initWithContentsOfFile:imagePath];
[cell.imageView setImage:image];

画像を非表示にして公開しないのはなぜですか?

4

2 に答える 2

0

MSAsyncImageCellさて、iOS で再利用されたときにイメージを置き換えるカスタム クラスを使用しました。URL から画像を非同期的に読み込み、「読み込み中」の画像を適切に表示し、別の画像に再利用するときにメモリを解放します。必要に応じて、ここにコードを投稿できますが、コードは少し長いです。

これは、実際に画像をロードするコードの一部です。私はウェブ/キャッシュから画像を持っているので、それはNSDataです。

- (BOOL)_loadImageWithData:(NSData *)imageData
{
    UIImage *image = [UIImage imageWithData:imageData];

    // Just in case loading failed.

    if (image)
    {
        // Extra check - don't mix up.
        if ([[self.currentURL absoluteString] isEqualToString:[self.imageURL absoluteString]])
            self.asyncImageView.image = image;

        return YES;
    }

    return NO;
}
于 2013-10-16T11:47:25.980 に答える