(使用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];


但这没有用,比我决定在线程中做:
在初始化方法中:

[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秒钟,然后停止。没有调试就无法播放。问题是什么?

最佳答案

AVAudioPlayer将立即被释放。您需要保留播放器。
因此,使AVAudioPlayer为该类的实例变量。

关于objective-c - 背景音乐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10402645/

10-12 20:19