请注意以下来自 Stephen 的精彩提示:AVAudioPlayer 在正常工作时会(出于某种原因!)抛出异常;很可能根本没有崩溃。
我有一个奇怪的问题。将我的项目升级到 Xcode5 后,应用程序在声音播放或 prepareToPlay 时崩溃。
NSString *path = [[NSBundle mainBundle] pathForResource"test" ofType"mp3"];
AVAudioPlayer *snd = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
NSLog(@"sound = nil? %d",snd == nil); // 0
NSLog(@"file = %@",snd.url.filePathURL.lastPathComponent); //test.mp3
NSLog(@"duration %f",snd.duration); //96.213333
在以上几行之后:
1) snd 不是 nil - 没关系
2) snd.url.filePathURL.lastPathComponent 返回正确的文件名(test.mp3),- 没关系
3) 持续时间为 96.213333 - 没关系
所以对象存在并且加载了声音(持续时间还可以)
那我做
[snd play]
然后它崩溃了
如果我这样做了
[snd prepareToPlay]
它也崩溃了
有人知道它为什么会崩溃吗?
Best Answer-推荐答案 strong>
试试这个代码。它正在工作,我在我的代码中使用过
它已经在 Xcode 5 上进行了测试并且可以工作:
NSURL* url = [[NSBundle mainBundle] URLForResource"test" withExtension"mp3"];
NSAssert(url, @"URL is valid.");
NSError* error = nil;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
if(!audioPlayer)
{
NSLog(@"Error creating player: %@", error);
}
else
{
[audioPlayer play];
}
关于ios - 升级到 Xcode5 后,AVAudioPlayer 在播放时崩溃,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/19989270/
|