AVAudioPlayer在播放之前正在发布?

时间:2012-02-24 06:37:39

标签: xcode audio release avfoundation

我正在制作一个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。

2 个答案:

答案 0 :(得分:0)

等待音频通过代理完成以释放音频。我相信如果您搜索网站上有很多与此类似的帖子,他们将拥有特定的代理代码。

答案 1 :(得分:0)

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