swift - “CGImageSource”没有名为 'takeUnretainedValue' 的成员

标签 swift

互联网上的很多帖子都说我可以使用以下代码返回未保留的图像源:

let imageData1 = image.TIFFRepresentation
let source1 = CGImageSourceCreateWithData(imageData1 as CFDataRef, nil).takeUnretainedValue()
let maskRef1 = CGImageSourceCreateImageAtIndex(source1, UInt(0), nil)

但是,我收到以下编译时错误:

'CGImageSource' does not have a member named 'takeUnretainedValue'

我做错了什么吗?或者是否已删除此方法以支持其他方法?

最佳答案

您只使用takeUnretainedValuetakeRetainedValue处理非托管对象时(例如,某些返回 Unmanaged<AnyObject>! 或类似内容的函数)。在本例中,这不是非托管对象,因此不需要它。

顺便说一句,当从 Core Foundation 函数返回 Create 的对象时或Copy从名字上看,这个对象的所有权已经转移给你了,你有责任释放它(参见 Create Rule )。在这些情况下,您几乎总是想使用 takeRetainedValue ,以便该对象的内存管理由 Swift 的 ARC 实现自动管理。如果您使用takeUnretainedValue ,除非您手动释放通过符合 Create Rule 的方法获得的与此对象关联的内存,否则您将泄漏内存。 .

关于swift - “CGImageSource”没有名为 'takeUnretainedValue' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27798710/

相关文章:

ios - 在 AVCapture 中播放录制的内容

ios - 如何一开始就换背景音乐?

ios - Swift 将数据编码成 URL

快速变色显示不同颜色

ios - SWIFT如何在触摸屏幕时播放声音

swift - PerformSegueWithIdentifier 如果 http POST 请求的参数值正确

swift - AVAssetWriter 在 Swift 中录制视频?

ios - UITableView 的装饰用途

swift - 有些按钮可以工作,有些按钮即使在同一层次结构中也不能工作

ios - "Communications error"- AVFoundation 相机