Swift:CGPathRelease和ARC

时间:2014-07-23 01:46:37

标签: ios memory-management swift automatic-ref-counting core-foundation

刚刚更新到Xcode Beta 4,并注意到以下编译器错误:

var path = CGPathCreateMutable()
...
CGPathRelease(path)
  

'CGPathRelease'不可用:Core Foundation对象是   自动内存管理

所以,我只是删除我的发布呼叫,一切都应该没问题?还是有更多我想念的东西?有什么特殊情况我应该注意ARC吗?

2 个答案:

答案 0 :(得分:20)

使用Swift与Cocoa和Objective-C Working with Cocoa Data Types部分说(强调我的):

  

从带注释的API返回的Core Foundation对象在Swift中自动进行内存管理 - 您不需要自己调用CFRetainCFReleaseCFAutorelease函数。如果您从自己的C函数和Objective-C方法返回Core Foundation对象,则使用CF_RETURNS_RETAINEDCF_RETURNS_NOT_RETAINED 对它们进行注释

     

...

     

当Swift导入尚未注释的API时,编译器无法自动内存管理返回的Core Foundation对象。 Swift将这些返回的Core Foundation对象包装在 Unmanaged<T>结构

所以是的,除非你有一个Unmanaged结构,这是正确的,你不必担心手动释放对象。

答案 1 :(得分:0)

正如接受的答案所说:是的,您根本不需要CGPathRelease

注意:如果您在代码中使用Unmanaged<T>,请检查the accepted answer