AVAudioPlayer间歇性地播放声音

问题描述:

我在ipad上有一个音乐播放器应用程序。我从服务器下载m4a文件并将它们保存到doc目录中。我也使用核心数据保存播放列表信息。我有超过1000首歌曲,并且我的桌子完美地装载并完美播放。我可以通过没有问题播放播放列表。但是......每隔一段时间一首歌就不播放。没有声音!我可以按单元格播放歌曲或转到下一首歌曲,所有内容都可以再次播放。所以这个问题是随机的,间歇的。它永远不会是同样的歌曲卡住了。我不能给你任何调试语句,就像我说的那样,它是如此随机和间歇的,以至于很难复制。我想知道这是否是ARC问题。请帮助,因为此应用即将投入生产。AVAudioPlayer间歇性地播放声音

相对码:

// setup music session 
NSError *error = nil; 
[[AVAudioSession sharedInstance] setDelegate: self]; 
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &error]; 
[[AVAudioSession sharedInstance] setActive: YES error: &error]; 

NSLog(@"error AVAudioSession:%@", [error description]); 

AVAudioPlayer *player = [[AVAudioPlayer alloc] init]; 
NSString *fullPath = fullPath = [self.docDirPath stringByAppendingPathComponent:filename]; 
NSURL *musicFileURL = [[NSURL alloc] initFileURLWithPath:fullPath]; 

// getting song from docDir 
    NSData *songData = [[NSData alloc] initWithContentsOfURL:musicFileURL]; 
    player = [player initWithData:songData error:&error]; 
    NSLog(@"error player reg:%@", [error description]); 

//NSLog(@"playing %@ at index:%d", musicFileURL, index); 

    self.appPlayer = player; 

    [self.appPlayer prepareToPlay]; 
    [self.appPlayer setEnableRate: YES]; 
    [self.appPlayer setDelegate: self]; 
    [self.appPlayer play]; 

如果使用ARC好点开始解决你的问题是看在仪器的引用计数。我也有这个问题。我的文件都没有播放。我在Instrument中看到AVAudioPlayer实例在声音开始播放之前就已经发布了。至少它看起来像是被释放了。在将AVAudioPlayer的引用存储在核心数据模型中后,错误得到修复!在没有ARC的另一个项目中,相同的代码没有存储引用就能工作。

+0

谢谢您在这么长时间之后回答我的问答。事实上,我的问题与它应该在发布之前有关。 – LittlePeculiar 2012-11-13 22:00:04

+0

欢迎您! – rockstarberlin 2012-11-13 22:32:02

,或者你可以尝试使用强而不是在财产申报保留

@属性(非原子,强)AVAudioPlayer *播放器;