CFURLRef需要桥接强制转换错误



我正在尝试播放声音,但当我编码时:

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。

感谢您提供任何指针:)

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

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

很好。

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

修改您的代码如下:

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

并检查您获得的状态代码;parmErr(-50)相对常见,通常意味着您的URL为零。

哦,还有一个想法,你没有显示你真正在哪里播放声音。您知道AudioServicesCreateSystemSoundID实际上并不播放声音。您需要致电:

AudioServicesPlaySystemSound(soundFileObject);

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

最新更新