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 实例会发生啥? [关闭]
如何在 ios5 中播放本地方法的 AVAudioPlayer?
正在播放歌曲时,如何在 AVAudioPlayer 中制作像 UIProgressView 这样的渐进式 UISlider?