如果我们不使用CF使用ARC,那么替代方案是什么。如果我们使用ARC,那么CFRelease就会抛出错误。我尝试过使用_bridge和_bridge_transfer两者都不起作用。
答案 0 :(得分:0)
听起来你正试图在代码中交替使用一些Core Foundation和Objective-C对象,但是没有看到任何代码,我无法确定发生了什么。但是,有一个非常重要的澄清,需要提一下,如果您还没有意识到:
ARC仅自动管理Objective-C对象的内存,这就是您不再需要调用release
的原因。因此,ARC 不自动管理Core Foundation对象的内存,这就是您使用CFRelease()
的原因。
答案 1 :(得分:0)
除CFRelease
之外别无选择。不需要CFRelease
,ARC是否必要。 ARC仅管理ObjC对象 。
在某些情况下,框架可能会为某种类型提供更专业的版本(例如CGContextRelease
),但实际上没有其他选择。
CFRelease
表示传递NULL
是错误的。如果这是你看到的错误并且你不想要这种行为,你总是可以编写自己的包装器函数,它首先在传递之前测试参数。
如果您有更具体的错误或更具体的问题,我们可能会提供更多帮助。