2

現在UIImageView、ユーザーが押したボタンに応じて一連の画像をアニメーション化するために を使用しています。次のように、 で作成した約 5 種類の画像セットがありますNSArrays

-(void)initiateAnimations {

punchani = [NSArray arrayWithObjects:
           [UIImage imageNamed:@"punch0001.png"],
           [UIImage imageNamed:@"punch0002.png"],
           [UIImage imageNamed:@"punch0003.png"],
           [UIImage imageNamed:@"punch0004.png"],
           [UIImage imageNamed:@"punch0005.png"],
           [UIImage imageNamed:@"punch0006.png"],
           [UIImage imageNamed:@"punch0007.png"],
           [UIImage imageNamed:@"punch0008.png"],
           [UIImage imageNamed:@"punch0009.png"],
           [UIImage imageNamed:@"punch0010.png"],
           [UIImage imageNamed:@"punch0011.png"],
           [UIImage imageNamed:@"punch0012.png"],nil];
}

そして、標準のアニメーション コードを使用して、それらを 1 回ループします。

player.animationImages = punchani;
player.animationDuration = 0.50;
player.animationRepeatCount = 1;
[player startAnimating];

ただし、より多くの/異なるイメージを にロードするとUIImageView、最終的に次のようなメモリ警告の出力が得られます: (実際の実行可能ファイルを 'appname' に置き換えました)

 2013-03-15 20:52:23.065 AppName[2080:907] Received memory warning.

私はこれがおそらく起こることを知っていましたが、ARC は私がアレイを解放することを禁じています。このリークを修正するにはどうすればよいですか? ありがとう

4

1 に答える 1

4

UIImage imageNamed: 画像をキャッシュし、独自のスケジュールでメモリを解放します。+ (UIImage *)imageWithContentsOfFile:(NSString *)path メモリを直接ロードするために使用 します

この答えも試してみてください。アニメーションが終了したら、画像の配列を削除します

于 2013-03-16T04:06:33.307 に答える