Swift:CGPathRelease和ARC
刚更新到Xcode Beta 4,并注意到下面的编译器错误与我的代码如下:
var path = CGPathCreateMutable() ... CGPathRelease(path)
“CGPathRelease”不可用:核心基础对象会自动进行内存pipe理
所以我只是简单地删除我的发布呼叫,一切都应该罚款? 还是有更多我失踪? 有什么特殊情况我应该知道与ARC?
使用Swift与Cocoa和Objective-C的 cocoa数据types部分的工作 (重点是我的)说:
从注释的API返回的Core Foundation对象在Swift中自动进行内存pipe理 – 您不需要自己调用
CFRetain
,CFRelease
或CFAutorelease
函数 。 如果从您自己的C函数和Objective-C方法返回Core Foundation对象,请使用CF_RETURNS_RETAINED
或CF_RETURNS_NOT_RETAINED
对其进行注释 。…
当Swift导入尚未注释的API时,编译器将无法自动memory management返回的Core Foundation对象。 Swift将这些返回的Core Foundation对象封装在
Unmanaged<T>
结构中 。
所以是的,除非你有一个Unmanaged
结构,这是正确的,你不必担心手动释放对象。
正如接受的答案所说: 是的,你根本不需要CGPathRelease
。
注意:如果您在代码中使用了Unmanaged<T>
,请检查接受的答案 。