0

对于播放快速声音,我更喜欢 SystemSound 而不是 AudioPlayer,因为加载时间更快。但是现在我已经升级到 Xcode 4.5.2 并且使用 ARC 我的代码播放音频片段不再有效。请参阅下面的完整代码。我得到的错误来自以下行: AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); 我收到带有以下错误消息的红色错误:Cast of Objective type NSURL to C pointer type CFURL (aka 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);
4

1 回答 1

1

使用 ARC,您需要使用 __bridge 在 Foundation 和 Core Foundation 之间进行免费桥接。

试试这个:

CFURLRef url = (__bridge CFURLRef)filePath;
AudioServicesCreateSystemSoundID(url, &soundID);
于 2012-11-27T23:37:16.100 回答