我正在尝试播放声音,但是当我编码时:
AudioServicesCreateSystemSoundID ((CFURLRef) alertSound, &soundFileObject);
它抛出以下错误:
将 Objective-C 指针类型“NSURL *”转换为 C 指针类型“CFURLRef”(又名“const struct __CFURL *”)需要桥接转换错误
我已经尝试了以下两个建议的解决方案:
AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject);
或
AudioServicesCreateSystemSoundID ((CFURLRef) CFBridgingRetain(alertSound), &soundFileObject);
但我仍然无法播放声音。
我想问题是:桥接错误是导致声音无法播放的原因,还是我应该看看其他地方?
我可以使用 SysSound 示例代码播放声音,我使用的是 iOS 6 和 Xcode 4.5。
感谢任何指点:)
最佳答案
Actor 可能不是声音不播放的原因:
AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject);
很好。
很可能您的错误是在您没有向我们展示的代码中。一个常见问题是 URL 创建错误或文件格式无效。
修改你的代码如下:
OSStatus status = AudioServicesCreateSystemSoundID((__bridge CFURLRef)alertSound, &soundFileObject);
NSLog(@"AudioServicesCreateSystemSoundID status = %ld", status);
并检查你得到的状态码; parmErr
(-50) 比较常见,通常表示您的 URL 为 nil。
哦,还有一个想法,您没有显示实际播放声音的位置。您确实知道 AudioServicesCreateSystemSoundID
实际上并不播放声音。您需要调用:
AudioServicesPlaySystemSound(soundFileObject);
抱歉,如果您已经知道了!
关于objective-c - CFURLRef 需要桥接转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703923/