我有一个带有两个按钮的AVAudioPlayer:播放和停止。 播放时隐藏播放按钮,反之亦然。

问题是当我在调用方法“audioPlayerDidFinishPlaying”时尝试在播放结束时按下“停止”按钮时发生崩溃。 实际上,这个方法释放了AVAudioPlayer,当我按下停止按钮(它也释放了对象......)时它会崩溃。 但是,我仍然测试玩家在手动释放之前是否为零,那为什么它会崩溃以及如何避免这种情况呢?

我的代码:在.h中:

@private AVAudioPlayer* monPlayer; 

在他们中 :

-(IBAction)playSound{
NSString *path = nil;
if(path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"sounds/%d", idoiseau]  ofType:@"m4a"])
    {
    monPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    monPlayer.delegate = self;
    [monPlayer play];
    [buttonPlay setEnabled:NO];
    [buttonStop setEnabled:YES];
    }
else return; 
}

-(IBAction)stopSound{
if(!monPlayer) return;
[monPlayer stop];
[monPlayer release]; 
monPlayer = nil;
[buttonPlay setEnabled:YES];
[buttonStop setEnabled:NO];
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
[player release];
player = nil;
    [buttonPlay setEnabled:YES];
[buttonStop setEnabled:NO];
}

编辑:只需在委托方法中用实例变量“monPlayer”替换局部变量“player”,它就可以了。 感谢hotpaw2 :-)

===============>>#1 票数:2 已采纳

您的代码似乎是将本地参数播放器设置为nil而不是对象实例变量monPlayer。

  ask by Chrysotribax translate from so

未解决问题?本站智能推荐:

2回复

iOS 5 AVAudioPlayer-启用ARC后,如何正确停止播放?

我正在使用启用了ARC的iOS 5。 点按视图时,我正在播放与特定视图关联的记录。 当用户更改视图时,播放停止。 我使用NSNotification调用-stopPlayback方法,该方法运行良好。 问题在于,当用户返回到原始视图并点按它时,它将在记录停止处继续。 在禁用ARC的
1回复

停止AVAudioPlayer

这是我的代码 } 我想用相同的按钮启动和停止AVAudioPlay(musicPlayer1在标题中)。 现在,当我触摸按钮时,它不会播放任何内容。 请帮助?
1回复

AVAudioPlayer停止问题

我在iPhone应用程序中使用AVAudioPlayer,它运行良好; 我在viewWillAppear中播放MP3,并在viewWillDisappear中停止播放。 当我致电[播放器停止]时,声音会立即停止,有没有一种方法可以缓慢停止声音,就像在声音仍在播放时用户关闭应用程序时发生的那样
1回复

AVAudioPlayer在Xcode中崩溃?

当我将应用程序从Xcode运行到iPhone7时,它在以下行崩溃: audioNSURL NSURL“ file:///private/var/containers/Bundle/Application/016483D7-D06F-4639-A026-CCD0B1F4B31F/Solo
2回复

iOS:AVAudioPlayer出现奇怪错误

在我的应用中,我使用AVAudioPlayer播放音频; 一切正常,并且可以在几分钟内正常工作,但是有时会崩溃,这是我的代码和控制台输出,但是我不明白如何解决我的问题... 我有以下代码: 这是控制台中的输出:
1回复

停止其他类中的AVAudioplayer

我在停止另一班的一班声音时遇到麻烦。 我在ViewDidLoad中播放声音,然后有了MainMain应用程序的主类,我想从ViewDIdLoad中停止声音。 我搜索了论坛,但没有找到解决方法。 你能帮我个忙吗? VievDidLoad在gdziedotykViewController
1回复

使用AVAudioPlayer帮助停止音频

好吧,我有两个问题。 我正在使用AVAudioPlayer播放.caf格式的简单音频文件。 我想做的是有一个播放和暂停按钮。 这是一个简单的IBAction的示例,用于播放按钮中的音频。 因此,当我继续使用该方法创建另一个IBAction时... 我编译了一下,xcode告
1回复

问题启动和停止AVAudioPlayer

我有一堂课,有一个音频播放器。 在B类中,我有一个开关,我想从那里控制播放和停止背景音乐。 我无法通过开关停止播放音乐。 这是我在class A的viewdidload的音频播放器 这是B级学生 我该怎么做?
3回复

iPhone AVAudioPlayer停止背景音乐

所以我刚注意到,在我的iPod Touch上,当我的应用程序触发使用AVAudioPlayer播放的短wav文件时,音乐会暂停。 这是正常的吗? 我找不到任何对此的引用,似乎会在某处注意到。 在播放我的声音时,有没有办法让音乐继续播放?
2回复

AVAudioPlayer UIButton-第二按停止当前音频播放

我有一个UIButton,当被触摸时会播放音频文件。 此刻连续两次触摸按钮会播放音频文件两次,而不是停止它。 我希望第二次单击停止音频文件,而不播放第二个实例。 任何建议将不胜感激。 谢谢