我有一个返回CGImageRef对象的方法。它包含这个电话:
CGImageRef posterFrame = [avAssetImage copyCGImageAtTime:time actualTime:nil error:&error];
...
return posterFrame;
根据我的理解,这种情况需要自动释放。但我不知道该怎么做。我尝试过使用CFCollectable(),但它不起作用。有什么想法吗?
答案 0 :(得分:12)
如果您正在使用垃圾收集,请使用CFMakeCollectable(posterFrame)
。如果您正在使用传统的内存管理,那么它非常简单:
return (CGImageRef)[(id)posterFrame autorelease];
您将CFTypeRef
(在本例中为CGImageRef
)转换为Objective-C对象指针,向其发送-autorelease
消息,然后将结果转换回{{ 1}}。此模式适用于(几乎)与CGImageRef
和CFRetain()
兼容的任何类型。
答案 1 :(得分:5)
Core Graphics(和Core Foundation)没有autorelease pool,因此如果您想要返回CGImageRef
,则需要为包含Create
的函数命名(fe {{ 1}})或者返回MyCreatePosterImage()
对象:
UIImage