如何自动发布CGImageRef?

时间:2011-08-15 02:15:55

标签: objective-c foundation

我有一个返回CGImageRef对象的方法。它包含这个电话:

CGImageRef posterFrame = [avAssetImage copyCGImageAtTime:time actualTime:nil error:&error];
...
return posterFrame;

根据我的理解,这种情况需要自动释放。但我不知道该怎么做。我尝试过使用CFCollectable(),但它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:12)

如果您正在使用垃圾收集,请使用CFMakeCollectable(posterFrame)。如果您正在使用传统的内存管理,那么它非常简单:

return (CGImageRef)[(id)posterFrame autorelease];

您将CFTypeRef(在本例中为CGImageRef)转换为Objective-C对象指针,向其发送-autorelease消息,然后将结果转换回{{ 1}}。此模式适用于(几乎)与CGImageRefCFRetain()兼容的任何类型。

答案 1 :(得分:5)

Core Graphics(和Core Foundation)没有autorelease pool,因此如果您想要返回CGImageRef,则需要为包含Create的函数命名(fe {{ 1}})或者返回MyCreatePosterImage()对象:

UIImage