画像をランダムに引っ張るゲームを構築しています。いくつかのテストを行った後、同じイメージが 2 回呼び出されるとクラッシュすることがわかりました。最初のゲームを完了した後、ゲームのメイン メニューに戻り、もう一度プレイすることを選択して、これを学びました。以前のゲームで既に表示されていた画像を取得してしまい、1 秒後にアプリがクラッシュしました。テストを行ったところ、最初のゲームで同じ画像が 2 回表示され、2 回目に画像が表示された 1 秒後にクラッシュしました。
これがサンプルコードです。「idNum」と「timer」は .h ファイルで宣言されているため、グローバルです。ご覧のとおり、プルする新しいイメージをランダム化するために毎秒実行される NSTimer があります。画像が 2 回目に表示されるまで、検索は機能します。1,3,2,5,3 のランダムな順序を取得するとします。2 番目の 3 でクラッシュします。
画像を 2 回呼び出すことはできませんか? これはキャッシュの問題だとしか思えません。画像キャッシュを解放する方法がわかりません。エラー objc_msgSend が表示されます。クラッシュのデバッグが苦手で申し訳ありません。
//idNum = the randomly generated integer
//pictures are called by numbers ex(1.jpg, 5.jpg)
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeCounter) userInfo:nil repeats:YES];
-(void)timeCounter {
time = time + 1;
idNum = (arc4random() % 5);
NSString * imgIDnum = [[NSString alloc] initWithFormat:@"%d", idNum];
imgMain = [NSString stringWithFormat:@"%@%@", imgIDnum, @".jpg"];
[imgIDnum release];
UIImage * daImg = [UIImage imageNamed:imgMain];
[imgView setImage:daImg];
}