0

我有一个 ViewController : GLKViewController 与此代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"background-music-aac" ofType:@"caf"];
    NSURL *url = [NSURL URLWithString:path];
    NSData *data = [NSData dataWithContentsOfURL:url];

    AVAudioPlayer *audio = [[AVAudioPlayer alloc] initWithData:data error:nil];
    audio.delegate = self;
    audio.volume = 1.0;
    audio.numberOfLoops = -1;

    [audio prepareToPlay];
    [audio play];

    [self setupContext];
    [self setupDisplay];
}

但是...我的图形工作正常,但 iOS 模拟器不播放音乐。我有什么问题吗?

4

1 回答 1

1

假设您正在使用 ARC,一旦您的方法返回给它的调用者,播放器就会被释放。引用这个答案

ARC 向音频播放器插入一个释放调用,因此它在离开创建它的方法后立即被释放。

尝试将 实现AVAudioPlayer为属性。

如果您的data值为 nil,则该文件未正确添加到项目中。要将文件添加到项目中,只需将其拖放到目标中即可。

此外,AVAudioPlayer还有一个initWithContentsOfURL:您可能想要使用的方法。

于 2013-03-23T12:55:39.367 回答