虽然您可以使用“CGImageRelease”释放对CGImageRef对象的引用,根据SDK“减少位图图像的保留计数”,有没有办法检查CGImageRef实例的当前保留计数? [cgImageRef retainCount]无效,因为CGImageRef不是retainCount消息的有效接收者。
换句话说,在呈现EAGLContext的类中的dealloc期间,我想确保释放对CGImageRef对象的任何未完成的引用,但是如果它的保留计数已经为0,我显然不想调用CGImageRelease(someCGImageRef)我在实践中发现只是检查图像ref是否为零与当前保留计数值不一致。
最好的做法是在完成CGImageRef实例后将其简单地设置为nil并且已经发布它,以便检查(someCGImageRef == nil)让您知道是否有未完成的引用对吗?
由于
答案 0 :(得分:1)
如果我正确阅读文档,CGImageRelease就像CFRelease,除了它以不同方式处理NULL。这意味着只要cgImageRef不为NULL,CFGetRetainCount就应该工作。
好的,所以我在那之后阅读了你的其余问题。您不应该在可能已经具有retainCount为0的对象上调用CFGetRetainCount,因为此时该对象已被销毁。而是将其设置为NULL。
(NULL和nil是等价的,但是nil用于Objective-C对象.CGImageRef不是其中之一,所以你应该使用NULL来避免以后混淆自己。)