背景音乐

时间:2012-05-01 18:53:29

标签: objective-c ios avfoundation avplayer

(使用AVFoundation.framework)

#import "AVFoundation/AVFoundation.h"

所以我遇到了问题,我首先在我的类的init方法中尝试了这个代码(这是首先加载的代码)

NSString* soundFilePath = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"];
NSURL* soundFileURL = [NSURL fileURLWithPath:soundFilePath];
AVAudioPlayer* player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops=-1;
[player play];

但是它不起作用,我决定在线程中这样做: 在init方法中:

[NSThread detachNewThreadSelector:@selector(playMusic) toTarget:self withObject:nil];

和方法本身:

-(void) playMusic {
    NSString* soundFilePath = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"];
    NSURL* soundFileURL = [NSURL fileURLWithPath:soundFilePath];
    AVAudioPlayer* player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
    player.numberOfLoops=-1;
    [player play];
}

当然是在* .h文件中声明的。它也没用。

我尝试在线调试

}
playMusic方法

文件播放2或3秒然后停止。没有调试就无法播放。有什么问题?

1 个答案:

答案 0 :(得分:2)

AVAudioPlayer将立即解除分配。你需要留住玩家。 因此,请将AVAudioPlayer设为类的实例变量。