首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布CGImage (CGImageRef)

发布CGImage (CGImageRef)
EN

Stack Overflow用户
提问于 2009-08-12 00:14:57
回答 1查看 16.9K关注 0票数 3

我很好奇我是否对CGImageRef进行了适当的内存管理,我通过几个方法传递了它(因为它是CG对象,我假设它不支持自动释放)。对我来说,使用非NSObjects对象进行内存管理以及与其他NSObject进行交互仍然有些陌生。

下面是我正在做的事情:

我正在使用CGBitmapContextCreateImage (保留计数1)在我的图像缓存管理器中创建CGImageRef,并将其添加到NSMutableDictionary (保留计数2)。

当CALayers使用图像时,我使用layer.contents (保留计数+1)赋值,并在删除图层之前使用layer.contents = nil (保留计数-1)清除内容。

最后,当清除纹理时,我调用CGImageRefRelease和NSMutableDictionary removeObject使保留计数为0。

这是一种正确的方式吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-12 00:34:32

Core Foundation objects (which all Core Graphics objects are) do support autorelease.

您描述的步骤应该工作得很好,并且不会泄漏或过度释放对象。

我使用CFRelease而不是像CGImageRelease这样的特定类发布函数,但纯粹是出于风格的考虑。我只需要小心NULLCGImageRelease检查NULL,而CFRelease在传递NULL时会崩溃。使用CGImageRelease和它的兄弟组件意味着您不必担心这一点。

我假设您指的是removeObject:forKey:,而不是removeObject (它并不存在,也不会有地方指定对象)。

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

https://stackoverflow.com/questions/1263642

复制
相关文章

相似问题

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