設定した文字列を NSString に読み取らせるのに問題があります。重要な場合は、再生アクションが UIButton OnTouchDown にフックされます。
- (IBAction)play {
if (audioPlayer.playing == NO) {
urlSong = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/k.mp3", [[NSBundle mainBundle] resourcePath]]];
[audioPlayer release];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:urlSong error:&error];
audioPlayer.numberOfLoops = 0;
//if i set this line to stringSong = @"k"; then comment out the next line everything works fine
stringSong = [[urlSong lastPathComponent] stringByDeletingPathExtension];
label.text = stringSong;
AVAudioSession *audiosession = [AVAudioSession sharedInstance];
[audiosession setCategory:AVAudioSessionCategoryAmbient error:nil];
[audioPlayer play];
[start setTitle:@"Stop" forState:UIControlStateNormal];
}
else
if ([stringSong isEqualToString:@"k"]){
label.text = @"audio stopped";
[audioPlayer stop];
}
}
iPhoneでコードを実行するとXcodeが返されます
EXC_BAD_ACCESS
この行で
if ([stringSong isEqualToString:@"k"]){
これは、文字列を「k」に設定するとコードが正常に実行されるため、URL から文字列を設定しようとしたことが原因であることはわかっています。
誰かがこれの全体的なポイントを疑問に思っている場合は、このボタンが押されたときに他のすべてのオーディオを停止し、この場合は「k.mp3」であるこのボタンに割り当てられたオーディオを開始するようにオーディオ ボタンを設定しようとしています。ただし、このオーディオが既に再生されている場合は、すべてのオーディオの再生を停止するだけです。ありがとうございました。