【问题标题】:How do I release a CGDataProvider in Swift on iOS?如何在 iOS 上的 Swift 中发布 CGDataProvider?
【发布时间】:2016-07-20 00:15:44
【问题描述】:

我在 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 文档中的请求?

(注意,在网上搜索“Swift release”很棘手,因为搜索结果中充斥着有关 Swift 版本的页面)

【问题讨论】:

    标签: swift


    【解决方案1】:

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

    来自Using Swift with Cocoa and Objective-C

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

    【讨论】:

      猜你喜欢
      • 2018-05-23
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2016-11-24
      相关资源
      最近更新 更多