Objective c iphone 5的xcode4.2中的自动引用计数与__桥冲突

Objective c iphone 5的xcode4.2中的自动引用计数与__桥冲突,objective-c,ios5,automatic-ref-counting,Objective C,Ios5,Automatic Ref Counting,我想创建一个简单的项目来研究xcode4.2上的ios5.0编程。这是原始代码: NSString *path = [[NSBundle mainBundle] pathForResource:@"win" ofType:@"wav"]; NSURL* url = [NSURL fileURLWithPath:path]; AudioServicesCreateSystemSoundID( ( CFURLRef)url, &winSoundID); 编译错误: file://loca

我想创建一个简单的项目来研究xcode4.2上的ios5.0编程。这是原始代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"win" ofType:@"wav"];
NSURL* url = [NSURL fileURLWithPath:path];

AudioServicesCreateSystemSoundID( ( CFURLRef)url, &winSoundID);
编译错误:

file://localhost/Users/Hikari/Documents/Projects/Pickers/Pickers/CustomPickerViewController.m: 错误:自动引用计数问题:转换为“CFURLRef”(aka) 指向 自动引用不允许使用非目标C指针 计数

所以我在谷歌上搜索了它,一些朋友说我必须添加宏“\uuuu bridge”来解决它,但这不起作用

代码:

错误:

file://localhost/Users/Hikari/Documents/Projects/Pickers/Pickers/CustomPickerViewController.m: 错误:语义问题:使用未声明的标识符“\uu桥”

自动参考计数已启用!
如何解决此问题?

您确定要始终使用ARC编译该文件吗。这看起来更像是在启用ARC的情况下编译文件一次,给出第一个错误,在禁用ARC的情况下编译第二次,在修复第一个错误后给出第二个错误。

objc_unrepairedpointer 答案是。 代码:

它很好用。
ps:感谢MacMake帮助我编辑代码。我想我已经学会了如何操作。

尝试您的项目设置,键入“自动参考”,并将Objective-C自动参考计数设置为“否”,禁用它并重新编译,您仍将收到警告消息,但它确实编译并运行。

iOS 5.0仍处于NDA状态;虽然ARC不再是苹果的NDA,但iOS5仍然是。任何回答苹果公司NDA的回答者都应该意识到这一点,并考虑是否可以在不违反协议的情况下回答这个问题。有点不对劲。。。。
AudioServicesCreateSystemSoundID( ( __bridge CFURLRef)url, &winSoundID);
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);