什么是CFRelease的替代品

时间:2012-08-23 04:43:27

标签: objective-c automatic-ref-counting

如果我们不使用CF使用ARC,那么替代方案是什么。如果我们使用ARC,那么CFRelease就会抛出错误。我尝试过使用_bridge和_bridge_transfer两者都不起作用。

2 个答案:

答案 0 :(得分:0)

听起来你正试图在代码中交替使用一些Core Foundation和Objective-C对象,但是没有看到任何代码,我无法确定发生了什么。但是,有一个非常重要的澄清,需要提一下,如果您还没有意识到:

ARC仅自动管理Objective-C对象的内存,这就是您不再需要调用release的原因。因此,ARC 自动管理Core Foundation对象的内存,这就是您使用CFRelease()的原因。

答案 1 :(得分:0)

CFRelease之外别无选择。不需要CFRelease,ARC是否必要。 ARC仅管理ObjC对象

在某些情况下,框架可能会为某种类型提供更专业的版本(例如CGContextRelease),但实际上没有其他选择。

CFRelease表示传递NULL是错误的。如果这是你看到的错误并且你不想要这种行为,你总是可以编写自己的包装器函数,它首先在传递之前测试参数。

如果您有更具体的错误或更具体的问题,我们可能会提供更多帮助。