オブジェクトを配列に追加しようとすると、EXC_BAD_ACCESS エラーが発生します。これは、メモリに存在しないものを指している、またはオブジェクトに nil 値が含まれていることを意味する可能性があることを理解しています。
コード:
- (void)fadeInPlayer:(AVAudioPlayer *)player withMaxVolume:(float)maxVolume {
NSLog(@"player: %@", player);
NSLog(@"maxVolume: %f", maxVolume);
NSMutableArray *playerAndVolume = [NSMutableArray arrayWithObjects: player, maxVolume, nil];
if (player.volume <= maxVolume) {
player.volume = player.volume + 0.1;
NSLog(@"%@ Fading In", player);
NSLog(@"Volume %f", player.volume);
[self performSelector:@selector(fadeInPlayer:withMaxVolume:) withObject:playerAndVolume afterDelay:0.5];
//playerAndVolume array used here because performSelector can only accept one argument with a delay and I am using two...
}
}
奇妙なことに、コンソールに追加しようとしているオブジェクト (上記の NSLogs として表示) を出力すると、データが返されます。
player: <AVAudioPlayer: 0x913f030>
maxVolume: 0.900000
NSLogs の直後にアプリがクラッシュします。残りのコードは配列がなくても正常に機能しますが、メソッドで performselector:withObject:AfterDelay を呼び出すために配列を使用する必要があります。
したがって、配列の初期化方法、またはオブジェクトの種類に問題があるに違いありませんが、わかりません。
どんな助けでも感謝します。