刚刚更新到Xcode Beta 4,注意到下面的代码编译错误:
var path = CGPathCreateMutable()
...
CGPathRelease(path)
'CGPathRelease'不可用:Core Foundation对象不可用自动内存管理
所以我只是简单地删除我的释放调用,一切都应该很好吗?还是我还错过了什么?关于ARC有什么特殊的情况需要我注意吗?
Using Swift with Cocoa and Objective-C的使用Cocoa数据类型一节说(强调我的):
带注释的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
结构体,这是正确的,你不必担心手动释放对象