我在 Swift 中有以下代码:
func cropToAlpha(image:CGImage) -> CGImage? {
let pixelDataProvider:CGDataProvider? = CGImageGetDataProvider(image)
if pixelDataProvider != nil {
let pixelData:CFData? = CGDataProviderCopyData(pixelDataProvider!)
The CGImageGetDataProvider 的文档和CGDataProviderCopyData 的文档两者都说
你负责释放这个对象
Swift 编程指南讲述了去初始化但这与释放对象不同。
一些 Objective-C 的答案(例如如何在 iOS 中发布 CGImageRef)建议致电CFRelease
但如果我尝试类似的事情
CFRelease(pixelDataProvider)
然后我得到编译器错误
“CFRelease”不可用:Core Foundation 对象自动进行内存管理
如何通过在 Swift 中释放生成的对象来满足 CGImageGetDataProvider 和 CGDataProviderCopyData 文档中的请求?
(注意:在网络上搜索“Swift 版本”很棘手,因为搜索结果充斥着有关 Swift 版本的页面)
你不必释放它。该文档仍然针对 Objective-C。编译器错误信息是正确的。
From 将 Swift 与 Cocoa 和 Objective-C 结合使用:
从带注释的 API 返回的 Core Foundation 对象会在 Swift 中自动进行内存管理,您无需调用CFRetain
, CFRelease
, or CFAutorelease
自己发挥作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)