刚刚更新到Xcode Beta 4,并注意到以下编译器错误:
var path = CGPathCreateMutable()
...
CGPathRelease(path)
'CGPathRelease'不可用:Core Foundation对象是 自动内存管理
所以,我只是删除我的发布呼叫,一切都应该没问题?还是有更多我想念的东西?有什么特殊情况我应该注意ARC吗?
答案 0 :(得分:20)
使用Swift与Cocoa和Objective-C 的Working with Cocoa Data Types部分说(强调我的):
从带注释的API返回的Core Foundation对象在Swift中自动进行内存管理 - 您不需要自己调用
CFRetain
,CFRelease
或CFAutorelease
函数。如果您从自己的C函数和Objective-C方法返回Core Foundation对象,则使用CF_RETURNS_RETAINED
或CF_RETURNS_NOT_RETAINED
对它们进行注释。...
当Swift导入尚未注释的API时,编译器无法自动内存管理返回的Core Foundation对象。 Swift将这些返回的Core Foundation对象包装在
中Unmanaged<T>
结构。
所以是的,除非你有一个Unmanaged
结构,这是正确的,你不必担心手动释放对象。
答案 1 :(得分:0)
正如接受的答案所说:是的,您根本不需要CGPathRelease
。
注意:如果您在代码中使用Unmanaged<T>
,请检查the accepted answer。