首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“CGImageSource”没有名为“takeUnretainedValue”的成员

“CGImageSource”没有名为“takeUnretainedValue”的成员
EN

Stack Overflow用户
提问于 2015-01-06 20:28:44
回答 1查看 585关注 0票数 0

互联网上的许多帖子说,我可以用以下代码返回一个未保留的图片源:

代码语言:javascript
复制
let imageData1 = image.TIFFRepresentation
let source1 = CGImageSourceCreateWithData(imageData1 as CFDataRef, nil).takeUnretainedValue()
let maskRef1 = CGImageSourceCreateImageAtIndex(source1, UInt(0), nil)

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

代码语言:javascript
复制
'CGImageSource' does not have a member named 'takeUnretainedValue'

我做错了什么吗?或者,这种方法是否已经被移除,取而代之的是其他方法?

EN

回答 1

Stack Overflow用户

发布于 2015-01-06 21:09:49

只有在处理非托管对象时才使用takeUnretainedValuetakeRetainedValue (例如,某些返回Unmanaged<AnyObject>!的函数或类似的函数)。在这种情况下,这不是一个非托管对象,所以这是不需要的。

顺便说一句,当从Core Foundation函数返回名称中包含CreateCopy的对象时,此对象的所有权已转移给您,您负责释放它(请参阅Create Rule)。在这些情况下,您几乎总是希望使用takeRetainedValue,以便此对象的内存管理由Swift的ARC实现自动管理。如果使用takeUnretainedValue,除非手动释放通过符合Create Rule的方法获得的与此对象关联的内存,否则将泄漏内存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27798710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档