我正在向iOS移植一些OSX代码,需要访问CIImage的字节。OSX版本用NSBitMapimagerep执行此操作,但在iOS上,我需要跳过一些箍。

这是我尝试运行的代码

CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef data = CGDataProviderCopyData(provider);

CGRect extent = [image extent];
//png.Load((UInt8*)CFDataGetBytePtr(data), extent.size.width, extent.size.height, true);

CFRelease(data);
//CGDataProviderRelease(provider);
.

它按预期工作,但经过一段时间的应用程序崩溃。我不知道为什么。我正在猜测内存泄漏/漏出的内存。据我所知,一切都被正确释放......如果我评论这些线路,没有什么崩溃。如果我评论CGDataProviderRelease,则立即崩溃。

有帮助吗?

解决方案

我认为你需要cfreelease(cgimage) - 你使用“创建”创建它没有?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top