我正在尝试播放声音,但当我编码时:
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);
如果你已经知道了,请道歉!