Aar*_*egh 3 objective-c foundation
我有一个返回CGImageRef对象的方法.它包含这个电话:
CGImageRef posterFrame = [avAssetImage copyCGImageAtTime:time actualTime:nil error:&error];
...
return posterFrame;
Run Code Online (Sandbox Code Playgroud)
据我所知,这种情况需要自动释放.但我不知道该怎么做.我尝试过使用CFCollectable(),但它不起作用.有任何想法吗?
Jon*_*pan 12
如果您正在使用垃圾收集,请使用CFMakeCollectable(posterFrame).如果您正在使用传统的内存管理,那么它非常简单:
return (CGImageRef)[(id)posterFrame autorelease];
Run Code Online (Sandbox Code Playgroud)
您将CFTypeRef(在本例中为a CGImageRef)转换为Objective-C对象指针,将其发送给-autorelease消息,然后将结果转换回CGImageRef.此模式适用于(几乎)任何与CFRetain()and 兼容的类型CFRelease().
Core Graphics(和Core Foundation)没有自动释放池,所以如果你想要返回CGImageRef你需要命名你的函数包含Create(fe MyCreatePosterImage())或返回UIImage对象:
CGImageRef posterFrame = [avAssetImage copyCGImageAtTime:time actualTime:nil error:&error];
UIImage *result = [UIImage imageWithCGImage:posterFrame];
CGImageRelease(posterFrame);
return result;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |