我正试图播放声音,但是当我编码时:
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。
感谢您的任何指示:)
答案 0 :(得分:9)
演员可能不是声音没有播放的原因:
AudioServicesCreateSystemSoundID ((__bridge CFURLRef) alertSound, &soundFileObject);
很好。
很可能您的错误出现在您未向我们展示过的代码中。常见问题是URL创建错误或文件格式无效。
修改您的代码,如下所示:
OSStatus status = AudioServicesCreateSystemSoundID((__bridge CFURLRef)alertSound, &soundFileObject);
NSLog(@"AudioServicesCreateSystemSoundID status = %ld", status);
并检查您获得的状态代码; parmErr
( - 50)相对常见,通常表示您的网址为零。
哦,还有一个想法,你没有表明你实际上在播放声音的地方。你知道AudioServicesCreateSystemSoundID
实际上并没有发出声音。你需要打电话:
AudioServicesPlaySystemSound(soundFileObject);
如果您已经知道,请道歉!