Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode AVAudioPlayer不是';t演奏_Ios_Xcode - Fatal编程技术网

Ios Xcode AVAudioPlayer不是';t演奏

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

我有一个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模拟器不播放音乐。
我做错什么了吗?

假设您使用的是ARC,那么一旦您的方法返回到调用方,该播放器就会被释放。引自:

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

尝试将
AVAudioPlayer
作为属性实现

如果
数据
为零,则文件未正确添加到项目中。要将文件添加到项目中,只需拖放文件并将其添加到目标中


另外,
AVAudioPlayer
有一个方法,
initWithContentsOfURL:
,您可能需要使用该方法。

是否检查了数据是否为零?为url和数据对象添加调试打印,如果您确实使用了错误argumentdata is nil,这将非常有用,但为什么^^此音频文件在我的资源中?您是否将其添加到项目中?使用NSURL*url=[NSURL fileURLWithPath:path];创建属性并使用initWithContentsOfURL不会改变任何内容:(这不是问题的原因。你在哪里看到玩家被释放?@giorashc玩家没有被保留。这是众所周知的,之前已经得到了回答。问题是你如何知道他使用ARC?他说传递给玩家的数据是nil@giorashc没有释放调用。即使用户获得
数据
right、 这名球员不参加比赛。