0

我正在将一些 OSX 代码移植到 iOS 并且需要访问 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 几乎立即崩溃。

4

1 回答 1

2

我认为您需要 CFRelease(cgImage) - 您使用“创建”来创建它吗?

于 2012-07-26T19:25:06.463 回答