如果我们不使用 ARC 使用 CFRelease,那么替代方案是什么。如果我们使用 ARC,那么 CFRelease 会抛出错误。我尝试过 _bridge 和 _bridge_transfer 都不起作用。
问问题
381 次
2 回答
0
听起来您正试图在代码中互换使用一些 Core Foundation 和 Objective-C 对象,但没有看到任何代码,我无法确定发生了什么。但是,如果您还没有意识到,有一个非常重要的说明需要提及:
ARC 只自动管理 Objective-C 对象的内存,这就是你不再需要调用的原因release
。因此,ARC 不会自动管理 Core Foundation 对象的内存,这就是您要使用CFRelease()
.
于 2012-08-23T04:54:27.537 回答
0
没有其他选择CFRelease
。CFRelease
是必要的,ARC 与否。ARC只管理 ObjC 对象。
在某些情况下,框架可能会为某种类型(例如CGContextRelease
)提供更专业的版本,但实际上别无选择。
CFRelease
声明通过是错误的NULL
。如果这是您看到的错误并且您不希望这种行为,您始终可以编写自己的包装函数,该函数在传递之前首先测试参数。
如果您有更具体的错误或更具体的问题,我们可能会提供更多帮助。
于 2012-08-23T04:57:14.033 回答