0

シンプルなシナリオ:5.000行のテーブルビューコントローラ。 私は0.pngから4999.pngの5000画像名を持っています。ここでios tableviewイメージでメモリが解放されない

は私cellForRowAtIndexPathです:メソッド:

静的NSStringの* CellIdentifier = @ "セル";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 
NSString *string = [NSString stringWithFormat:@"%d",indexPath.row]; 
UIImage *img = [UIImage imageNamed:string]; 

if (img) { 
    cell.imageView.image = img; 
} else { 
    cell.imageView.image = [UIImage imageNamed:@"NoPhotoDefault"]; 
} 
return cell; 

私は行動の聖霊降臨祭の楽器をanalizedてきたが、それは本当のメモリ使用量がスクロールで速く上昇していると、それがダウンしたことがないことを示しています。

最後の行に達すると約8 MBから始まり200 MBになります。

ここには何が欠けていますか?

ありがとう

P.S. Proj base sdkは5.0で、ARCを使用します。

後でアプリをバックグラウンドで送信すると、メモリが解放されます。

+0

すでに回答があります。[こちら](http://stackoverflow.com/questions/6792000/image-caching-in-ios) – Alladinian

答えて

1

UIImageは、方法imageNamed:を使用するとイメージをキャッシュします。同じイメージを複数回使用して再ロードするのを避けるためです。

このメソッドはシステムキャッシュ内で指定された名前のイメージオブジェクトを探し、存在する場合はそのオブジェクトを返します。一致するイメージオブジェクトがキャッシュにない場合、このメソッドは指定されたファイルからイメージデータをロードし、キャッシュしてから結果のオブジェクトを返します。

イメージをキャッシュしないようにするには、代わりにimageWithContentsOfFile:を使用します。

このメソッドはイメージオブジェクトをキャッシュしません。

+0

よろしくお願いします。私は知らなかったimagedNamed:画像をキャッシュしていた。 – AndreiS

関連する問題