Ios Xcode AVAudioPlayer不是';t演奏
我有一个ViewController:GLKViewController 使用此代码:Ios Xcode AVAudioPlayer不是';t演奏,ios,xcode,Ios,Xcode,我有一个ViewController:GLKViewController 使用此代码: - (void)viewDidLoad { [super viewDidLoad]; NSString *path = [[NSBundle mainBundle] pathForResource:@"background-music-aac" ofType:@"caf"]; NSURL *url = [NSURL URLWithString:path]; NSData *d
- (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模拟器不播放音乐。
我做错什么了吗?假设您使用的是ARC,那么一旦您的方法返回到调用方,该播放器就会被释放。引自: ARC向音频播放器插入一个释放调用,因此它在离开创建它的方法后立即被释放 尝试将
AVAudioPlayer
作为属性实现
如果数据
为零,则文件未正确添加到项目中。要将文件添加到项目中,只需拖放文件并将其添加到目标中
另外,
AVAudioPlayer
有一个方法,initWithContentsOfURL:
,您可能需要使用该方法。是否检查了数据是否为零?为url和数据对象添加调试打印,如果您确实使用了错误argumentdata is nil,这将非常有用,但为什么^^此音频文件在我的资源中?您是否将其添加到项目中?使用NSURL*url=[NSURL fileURLWithPath:path];创建属性并使用initWithContentsOfURL不会改变任何内容:(这不是问题的原因。你在哪里看到玩家被释放?@giorashc玩家没有被保留。这是众所周知的,之前已经得到了回答。问题是你如何知道他使用ARC?他说传递给玩家的数据是nil@giorashc没有释放调用。即使用户获得数据
right、 这名球员不参加比赛。