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);
道歉,如果你已经知道了!