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的另一个项目中,相同的代码没有存储引用就能工作。
答
,或者你可以尝试使用强而不是在财产申报保留
@属性(非原子,强)AVAudioPlayer *播放器;
谢谢您在这么长时间之后回答我的问答。事实上,我的问题与它应该在发布之前有关。 – LittlePeculiar 2012-11-13 22:00:04
欢迎您! – rockstarberlin 2012-11-13 22:32:02