systemSound 不再适用于使用 ARC 升级的 Xcode 4.5.2
Posted
技术标签:
【中文标题】systemSound 不再适用于使用 ARC 升级的 Xcode 4.5.2【英文标题】:systemSound no longer working with upgraded Xcode 4.5.2 using ARC 【发布时间】:2012-11-27 23:30:24 【问题描述】:对于播放快速声音,我更喜欢 SystemSound 而不是 AudioPlayer,因为加载时间更快。但是现在我已经升级到 Xcode 4.5.2 并且使用 ARC 我的代码来播放音频 sn-ps 不再有效。请参阅下面的完整代码。我得到的错误来自以下行: 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);
【问题讨论】:
试试AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
@RoboticCat - 感谢您的尝试,但我尝试了并收到链接器错误消息 - 还有其他想法吗??
【参考方案1】:
使用 ARC,您需要使用 __bridge 在 Foundation 和 Core Foundation 之间进行免费桥接。
试试这个:
CFURLRef url = (__bridge CFURLRef)filePath;
AudioServicesCreateSystemSoundID(url, &soundID);
【讨论】:
谢谢 - 但这会引发 3 个链接器错误,如下所示:体系结构 i386 的未定义符号:“_AudioServicesCreateSystemSoundID”,引用自:- [ViewController sound2:] in ViewController.o “_AudioServicesPlaySystemSound”,引用自: - [ViewController sound2:] 在 ViewController.o ld 中:未找到架构 i386 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 不,我没有 - 我有 - 刚刚添加了 AudioToolbox,一切正常 - 做得好,谢谢!!!以上是关于systemSound 不再适用于使用 ARC 升级的 Xcode 4.5.2的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 KML 数据检索适用于 Android 的 Google 路线不再有效? [复制]