0

我无法让我的 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"]){

我知道这是因为我试图从 url 设置字符串,因为当我明确地将我的字符串设置为 'k' 时,代码执行得很好。

如果有人想知道这一点的总体意义,我正在尝试将我的音频按钮设置为在按下此按钮时停止所有其他音频并启动分配给此按钮的音频,在本例中为“k.mp3”。但是如果这个音频已经在播放只是为了停止播放所有的音频。谢谢你。

4

1 回答 1

1

你没有保留stringSong.

这一行:

stringSong = [[urlSong lastPathComponent] stringByDeletingPathExtension];

应该:

stringSong = [[[urlSong lastPathComponent] stringByDeletingPathExtension] retain];

在某些时候,这需要被释放。

于 2013-03-15T03:29:18.977 回答