CFURLRef需要桥接转换错误

我试图让声音播放,但是当我编码:

AudioServicesCreateSystemSoundID ((CFURLRef) alertSound, &soundFileObject); 

它会抛出以下错误:

对C指针types“CFURLRef”(又名“const struct __CFURL *”)的Objective-C指针types“NSURL *”的转换需要桥接转换错误

我已经尝试了以下两个build议的解决scheme:

 AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject); 

要么

 AudioServicesCreateSystemSoundID ((CFURLRef) CFBridgingRetain(alertSound), &soundFileObject); 

但我仍然无法播放声音。

我想这个问题是:是桥接错误声音不播放的原因,或者我应该看看其他地方?

我可以使用SysSound示例代码来播放声音,我正在使用iOS 6和Xcode 4.5。

感谢任何指针:)

演员阵容可能不是声音不播放的原因:

 AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject); 

很好。

您的错误很可能是您没有向我们显示的代码。 一个常见的问题是URL创build错误或无效的文件格式。

修改你的代码如下:

 OSStatus status = AudioServicesCreateSystemSoundID((__bridge CFURLRef)alertSound, &soundFileObject); NSLog(@"AudioServicesCreateSystemSoundID status = %ld", status); 

并检查你得到的状态码; parmErr (-50)是比较常见的,通常意味着你的URL是零。

哦,还有一个想法,你不显示你真的在播放声音。 您知道AudioServicesCreateSystemSoundID实际上不会播放声音。 你需要打电话给:

 AudioServicesPlaySystemSound(soundFileObject); 

道歉,如果你已经知道了!