ios - 升级到 Xcode5 后 AVAudioPlayer 在播放时崩溃

标签 ios objective-c xcode5 avaudioplayer

请注意下面来自 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]

它也崩溃了:(

有人知道它为什么会崩溃吗?

最佳答案

试试这段代码。它正在工作,我在我的代码中使用过 并且它已经在 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/

相关文章:

ios - 在没有状态栏的情况下使用 safeAreaLayoutGuide

ios - 如何在 ios 中的自定义表格单元格内创建按钮操作

objective-c - 我可以在带有 subview 的 NSView 上设置 layer.transform 吗?

iphone - 无序修改和访问参数

ios - Xcode 5 Storyboard 创建的 UIViewController 布局在以编程方式创建新 VC 时未被调用

ios - Xcode 5 IOS 7 错误 : failed to launch '/private/var/mobile/Applications/' -- NotFound

ios - 如何首先使用具有特定名称的NSSortdescriptor,然后按名称排序?

ios - 拖动 UIView 结束时会丢失手势

ios - 将超链接添加到来自 iOS 应用程序的电子邮件中的预加载文本中

ios - 在我的 Controller 中未调用 supportedInterfaceOrientations