我在使用此代码时遇到了泄漏问题而无法找到它的来源。 在自动释放池中调用此函数。 我发布了IplImage *图像参数。
当我运行ObjAlloc工具时,它告诉我“NSData * data”正在泄漏。如果我尝试手动释放此函数返回的UIImage,我会收到一个EXC_BAD_ACCESS错误,可能是因为这个UIImage是自动释放的。
我有点困惑,任何提示都会受到赞赏。
谢谢!
UIImage *UIImageFromIplImage(IplImage *image)
{
NSLog(@"IplImage (%d, %d) %d bits by %d channels, %d bytes/row %s", image->width, image->height, image->depth, image->nChannels, image->widthStep, image->channelSeq);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
CGImageRef imageRef = CGImageCreate(image->width, image->height,
image->depth, image->depth * image->nChannels, image->widthStep,
colorSpace, kCGImageAlphaNone|kCGBitmapByteOrderDefault,
provider, NULL, false, kCGRenderingIntentDefault);
UIImage *ret = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return ret;
}
答案 0 :(得分:1)
代码对我来说很好看。也许您可以尝试验证它是否是真正的泄漏,比如在循环中运行代码以查看内存使用量是否增加?
答案 1 :(得分:0)
感谢您的回答。你没事,这个特定的代码不会泄漏。
泄漏的原因是这个返回的UIImage被设置为UIImageView的这个图像。但是我没有发布这个UIImageView,因为我认为它是从笔尖加载的,它会自动释放。
原因可能是我为此UIImageView设置了一个属性设置?
@property (nonatomic, retain) UIImageView* imageView;
我是否应该为从nib文件创建的对象具有属性?
谢谢!