我是否需要在Objective-C代码(带ARC的iOS 6)中释放C变量?

我是否需要在Objective-C代码(带ARC的iOS 6)中释放C变量?,objective-c,c,ios6,automatic-ref-counting,Objective C,C,Ios6,Automatic Ref Counting,如果我在iPhone代码中实现以下内容: NSString* soundPath = [[NSBundle mainBundle] pathForResource:soundFile ofType:@"wav"]; SystemSoundID feedbackSound; AudioServicesCreateSystemSoundID((__bridge CFURLRef) [NSURL fileURLWithPath:soundPath], &feedbackSound); Audi

如果我在iPhone代码中实现以下内容:

NSString* soundPath = [[NSBundle mainBundle] pathForResource:soundFile ofType:@"wav"];
SystemSoundID feedbackSound;
AudioServicesCreateSystemSoundID((__bridge CFURLRef) [NSURL fileURLWithPath:soundPath], &feedbackSound);
AudioServicesPlaySystemSound(feedbackSound);
我真的必须释放“反馈”,因为它是C代码吗?它会漏吗


我正在使用ARC/iOS 6。

您应该这样做。要调用的正确方法是:

AudioServicesDisposeSystemSoundID
()


通常,ARC只处理Objective-C对象。当您处理较低级别的框架(核心图形、音频服务等)时,许多调用将“在引擎盖下”分配内存,您将负责对其进行处理。在许多情况下,您有特定的方法来执行释放,就像您执行分配一样。

ARC只管理Objective-C对象的内存。然而,系统声音服务是一个C接口。在这种情况下,您必须自己管理内存

AudioServicesDisposeSystemSoundID (feedbackSound);

是的,你必须。ARC仅适用于声明为Objective-C对象的类型。问题中的程序将产生漏洞

malloc
需要
免费
<代码>新建
需要
删除
CFStringCreate…
需要
CFRelease
——依此类推