Rud*_*udi 3 iphone core-graphics objective-c quartz-graphics
我很好奇我是否正在使用CGImageRef跟踪正确的内存管理,我正在通过几种方法(因为它是CG对象,我认为它不支持自动释放).使用非NSObjects进行内存管理以及与其他NSObject的交互对我来说仍然有点新鲜.
我在做什么:
我正在使用CGBitmapContextCreateImage(保留计数1)在我的图像缓存管理器中创建CGImageRef,并将其添加到NSMutableDictionary(保留计数2).
当CALayers使用图像时,我使用layer.contents(保留计数+1)进行分配,并在删除图层之前使用layer.contents = nil(保留计数-1)清除内容.
最后,在清除纹理时,我调用CGImageRefRelease和[NSMutableDictionary removeObject]使保留计数为0.
这是一种正确的方法吗?
Pet*_*sey 17
Core Foundation对象(所有Core Graphics对象都支持)支持自动释放.
您描述的步骤应该可以正常工作,不会泄漏或过度释放对象.
我使用的CFRelease不是特定类的释放函数CGImageRelease,而是纯粹作为一种风格问题.我只需要注意NULL:CGImageRelease检查NULL,CFRelease否则会在通过时崩溃NULL.使用CGImageRelease和它的兄弟姐妹意味着你不必担心这一点.
我假设你的意思removeObject:forKey:,而不是removeObject(它不存在,无论如何都不会指定一个对象).
| 归档时间: |
|
| 查看次数: |
15704 次 |
| 最近记录: |