opencv IplImage для UIImage с утечкой ARC - PullRequest
3 голосов
/ 16 октября 2011

Я конвертирую поток 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];

Каким-то образом эта память никогда не освобождается.Как это можно исправить?

...