为了播放快速声音,我更喜欢SystemSound而不是AudioPlayer,因为加载时间更快。但现在我升级到Xcode 4.5.2并使用ARC我的代码播放音频片段不再有效。请参阅下面的完整代码我得到的错误来自以下行:AudioServicesCreateSystemSoundID((CFURLRef)filePath,& soundID);我收到红色错误,出现以下错误消息:将目标类型NSURL转换为C指针类型CFURL(又名const dtruct)。任何想法怎么可能取代这一行??`
NSString *path = [NSString stringWithFormat:@"%@%@", [[NSBundle mainBundle] resourcePath], @"/click.mp3"];
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
// here is the problem line
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
答案 0 :(得分:1)
使用ARC,您需要在Foundation和Core Foundation之间使用__bridge进行免费桥接。
试试这个:
CFURLRef url = (__bridge CFURLRef)filePath;
AudioServicesCreateSystemSoundID(url, &soundID);