AVAudioPlayer 在播放前释放?

Posted

技术标签:

【中文标题】AVAudioPlayer 在播放前释放?【英文标题】:AVAudioPlayer is releasing before playing? 【发布时间】:2012-02-24 06:37:38 【问题描述】:

我正在制作一个soundboard 应用程序,并使用此代码播放mp3 文件:

-(IBAction)playSound 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"mysound" ofType:@"mp3"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate=self;
    [theAudio play];
    [theAudio release];

当我包含[theAudio release]; 时,声音不会播放。如果我把它拿出来,它会播放,但我不想出现内存泄漏。我该如何解决这个问题?

如果您可以包含我需要添加的任何代码,那将非常有帮助。我是编程新手(除了我在学校用过的 TrueBasic),所以我不熟悉 Objective-C。

【问题讨论】:

【参考方案1】:

等待音频通过委托完成以释放音频。我相信网站上有很多类似的帖子,如果你搜索,他们会有特定的委托代码。

【讨论】:

【参考方案2】:

这只是因为您使用了局部变量。所以音频会立即发布。 您应该将其定义为类成员并在此处分配它。所以当这个功能完成后,它仍然可以工作。

【讨论】:

很遗憾有很多样本也犯了这个错误,你被误导了。

以上是关于AVAudioPlayer 在播放前释放?的主要内容,如果未能解决你的问题,请参考以下文章

在 NSTimer 中播放 AVAudioPlayer,没有内存泄漏?

如何安全地停止 AVAudioPlayer

Mac 上的 AVAudioPlayer 无法播放/崩溃

声音播放完毕后 AVAudioPlayer 实例会发生啥? [关闭]

如何在 ios5 中播放本地方法的 AVAudioPlayer?

正在播放歌曲时,如何在 AVAudioPlayer 中制作像 UIProgressView 这样的渐进式 UISlider?