如何在iOS上的Swift中发布CGDataProvider?

dum*_*dad 2 swift

我在Swift中有以下代码:

 func cropToAlpha(image:CGImage) -> CGImage? {
    let pixelDataProvider:CGDataProvider? = CGImageGetDataProvider(image)
    if pixelDataProvider != nil {
        let pixelData:CFData? = CGDataProviderCopyData(pixelDataProvider!)
Run Code Online (Sandbox Code Playgroud)

对CGImageGetDataProvider文档对CGDataProviderCopyData文档都表示,

您负责释放此对象

Swift编程指南讨论了取消初始化,但这与发布对象不同.

一些Objective-C答案(例如我如何在iOS中发布CGImageRef)建议调用CFRelease但是如果我尝试类似的话

CFRelease(pixelDataProvider)
Run Code Online (Sandbox Code Playgroud)

然后我得到编译器错误

'CFRelease'不可用:Core Foundation对象自动进行内存管理

如何通过在Swift中释放生成的对象来遵守CGImageGetDataProvider和CGDataProviderCopyData文档中的请求?

(NB搜索网页上的'Swift release'很棘手,因为搜索结果充斥着关于Swift版本的页面)

Ole*_*ann 7

您不必释放它.该文档仍然针对Objective-C.编译器错误消息是正确的.

使用Swift与Cocoa和Objective-C:

核心基础,从注释的API返回的对象是自动存储在管理斯威夫特,你不需要调用CFRetain,CFReleaseCFAutorelease功能自己.