0

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

4

2 回答 2

0

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

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

于 2012-08-23T04:54:27.537 回答
0

没有其他选择CFReleaseCFRelease是必要的,ARC 与否。ARC只管理 ObjC 对象。

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

CFRelease声明通过是错误的NULL。如果这是您看到的错误并且您不希望这种行为,您始终可以编写自己的包装函数,该函数在传递之前首先测试参数。

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

于 2012-08-23T04:57:14.033 回答