Iphone 检索CGImageRef对象的保留计数?
虽然您可以使用“CGImageRelease”释放对CGImageRef对象的引用,但根据SDK,它“减少位图图像的保留计数”,是否有方法检查CGImageRef实例的当前保留计数?[cgImageRef retainCount]无效,因为cgImageRef不是retainCount消息的有效接收者 换句话说,在呈现EagleContext的类中进行dealloc期间,我希望确保释放对CGImageRef对象的所有未完成引用,但如果其保留计数已经为0,我显然不想调用CGImageRelease(someCGImageRef)。我在实践中发现,仅仅检查image ref是否为nil与当前的retain count值不一致 在处理完CGImageRef实例并且已经发布了它之后,简单地将其设置为nil,这样(someCGImageRef==nil)检查就可以知道是否有未完成的引用,这是一种最佳实践吗Iphone 检索CGImageRef对象的保留计数?,iphone,objective-c,memory-management,Iphone,Objective C,Memory Management,虽然您可以使用“CGImageRelease”释放对CGImageRef对象的引用,但根据SDK,它“减少位图图像的保留计数”,是否有方法检查CGImageRef实例的当前保留计数?[cgImageRef retainCount]无效,因为cgImageRef不是retainCount消息的有效接收者 换句话说,在呈现EagleContext的类中进行dealloc期间,我希望确保释放对CGImageRef对象的所有未完成引用,但如果其保留计数已经为0,我显然不想调用CGImageRelease
谢谢如果我正确阅读了文档,CGImageRelease与CFRelease类似,只是它处理NULL的方式不同。这意味着只要cgImageRef不为NULL,CFGetRetainCount就应该工作 好的,我看了你接下来的问题。您不应该对可能已具有0重计数的对象调用CFGetRetainCount,因为此时该对象已被销毁。相反,将其设置为NULL
(NULL和nil是等效的,但nil是用于Objective-C对象的。CGImageRef不是其中之一,因此您可能应该使用NULL以避免以后混淆自己。)奇怪的是,即使在测试not NULL并通过后,在我的例子中,当我试图清理EAGL上下文时,在CGImgeRef实例上调用CFGetRetainCount会崩溃。目前,我只是将CGImageRef实例设置为nil,没有发现任何泄漏。