I have a method that returns a CGImageRef
object. It contains this call:
CGImageRef posterFrame = [avAssetImage copyCGImageAtTime:time actualTime:nil error:&error];
...
return posterFrame;
This situation, as I understand it, calls for an autorelease. But I have no idea how to do it. I've tried using CFCollectable()
, but it doesn't work. Any ideas?
If you're using garbage collection, use CFMakeCollectable(posterFrame)
. If you're using traditional memory management, it's very straightforward:
return (CGImageRef)[(id)posterFrame autorelease];
You cast the CFTypeRef
(in this case, a CGImageRef
) to an Objective-C object pointer, send it the -autorelease
message, and then cast the result back to CGImageRef
. This pattern works for (almost) any type that's compatible with CFRetain()
and CFRelease()
.