У меня утечка с этим кодом, но я не могу найти, откуда он взялся.
Эта функция вызывается в пуле автоматического выпуска.
Я освобождаю аргумент IplImage * image.
Когда я запускаю инструмент 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;
}