我有一个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模拟器不播放任何音乐。 我做错了什么?
答案 0 :(得分:1)
假设您正在使用ARC,则只要您的方法返回其调用方,播放器就会被释放。引用this answer:
ARC向音频播放器插入一个释放调用,因此在离开创建它的方法后立即取消分配。
尝试将AVAudioPlayer
作为属性实施。
如果data
为零,则文件未正确添加到项目中。要将文件添加到项目中,只需将其拖放并添加到目标中即可。
另外,AVAudioPlayer
有一个方法initWithContentsOfURL:
,您可能想要使用它。