Я конвертирую поток IplImages в UIImage, используя эту функцию:
+(UIImage *)createUIImageFromIplImage:(IplImage *)image
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
CGImageRef imageRef = CGImageCreate(image->width, image->height,
image->depth, image->depth * image->nChannels, image->widthStep,
colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault,
provider, NULL, false, kCGRenderingIntentDefault);
UIImage* ret = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return ret;
}
Однако после нескольких изображений я получаю предупреждение памяти, а затем происходит сбой.Запуск в инструментах показывает, что проблемная строка - это место, где выделяется память:
NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];
Каким-то образом эта память никогда не освобождается.Как это можно исправить?