题
我正在向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) - 你使用“创建”创建它没有?
不隶属于 StackOverflow