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

时间:2016-03-31 13:40:52

标签: swift

我在Swift中有以下代码:

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

documentation for CGImageGetDataProviderdocumentation for CGDataProviderCopyData都说

  

您有责任释放此对象

Swift编程指南讨论deinitialization,但这与发布对象不同。

某些Objective-C答案(例如How do I release a CGImageRef in iOS)建议调用CFRelease,但如果我尝试类似

CFRelease(pixelDataProvider)

然后我得到编译器错误

  

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

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

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

1 个答案:

答案 0 :(得分:6)

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

来自Using Swift with Cocoa and Objective-C

  

从带注释的API返回的Core Foundation对象在Swift中自动进行内存管理 - 您无需自己调用CFRetainCFReleaseCFAutorelease函数。