メモリ警告を受け取った後、EXC_BAD_ACCESS でアプリケーションに問題が発生しています。これが私がテストしている方法です。メモリを割り当てるだけで解放しない単純なアプリケーションを作成しました。約 14 MB の空きメモリを残して大量のメモリを割り当てた後、メイン アプリケーションに切り替えます。すぐに didReceiveMemoryWarning でメモリ警告を受け取ります。しばらくすると、UIButton に画像を設定する関数でアプリがクラッシュします。
-(void)activateRecordButton
{
UIImage *image = [UIImage imageNamed:@"audioRecordOn"];
[recButton setImage:image forState:UIControlStateNormal];
}
私が得るエラーは、setImage を呼び出す行の EXC_BAD_ACCESS(code=1, address=some_address) です。これらの行にコメントを付けると、UIButton のイメージを設定する別の関数でアプリがクラッシュします。
これは私の didReceiveMemoryWarning です:
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
なぜこうなった?これは、画像をロードするためのメモリがなくなったためか、または他のアプリが多くのメモリを割り当てたときに recButton が何らかの理由で割り当て解除されたためでしょうか?
Iphone 4 ios 5.1.1で実行しています