gpt4 book ai didi

iphone - 释放 CGImage (CGImageRef)

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:09 27 4
gpt4 key购买 nike

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

这是我在做什么:

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

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

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

这样做合适吗?

最佳答案

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

您描述的步骤应该工作正常,不会泄漏或过度释放对象。

我使用 CFRelease 而不是像 CGImageRelease 这样的特定类发布函数,但这纯粹是一种风格问题。我只需要注意 NULL:CGImageRelease 检查 NULL,而 CFRelease 在传递 时会崩溃空。使用 CGImageRelease 及其兄弟意味着您不必为此担心。

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

关于iphone - 释放 CGImage (CGImageRef),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com