我想创建一个简单的项目来研究XCODE4.2上的IOS5.0编程。这是原始代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"win" ofType:@"wav"];
NSURL* url = [NSURL fileURLWithPath:path];
AudioServicesCreateSystemSoundID( ( CFURLRef)url, &winSoundID);
编译错误:
文件://本地主机/用户/ HICALI/文档/项目/采集器/采集器/CuffPosieReVIEW控制器。
错误:自动引用计数问题:转换为“cfurlRef”(又名
指向
不允许使用自动引用的非目标c指针
计数
所以我在谷歌上搜索过它,一些朋友说我必须添加宏“桥”来解决它,但这不起作用。
代码:
AudioServicesCreateSystemSoundID( ( __bridge CFURLRef)url, &winSoundID);
错误:
文件://本地主机/用户/ HICALI/文档/项目/采集器/采集器/CuffPosieReVIEW控制器。
错误:语义问题:未声明的标识符'y-Byg'的使用
启用自动参考计数!
如何解决这个问题???
最佳答案
objc_不可恢复指针
答案就是这样。
代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"win" ofType:@"wav"];
NSURL* url = [NSURL fileURLWithPath:path];
AudioServicesCreateSystemSoundID( (CFURLRef)objc_unretainedPointer(url), &winSoundID);
path = [[NSBundle mainBundle] pathForResource:@"crunch" ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)objc_unretainedPointer([NSURL fileURLWithPath:path]), &crunchSoundID);
它工作得很好。
谢谢麦卡托帮我编辑代码。我想我已经学会了。