Увеличение использования памяти CFData при использовании фильтров Core Image

У меня проблема со слишком большим количеством выделенной памяти. Мой app alloc mem достигает до 100 МБ! И да... я использую ARC, большая часть памяти выделяется CFData(насколько я понимаю это CoreImage фильтры). После применения фильтра к изображению, CFData выделенная память увеличивается на ~1,3 МБ и не освобождает:

Инструменты, показывающие использование памяти

Код выглядит так:

+(UIImage*)BWFilter:(UIImage *)imgFX
{
    CIImage *sourceImage = [[CIImage alloc] initWithImage:imgFX];

    CIImage *blackAndWhite = [CIFilter filterWithName:@"CIColorControls" keysAndValues:kCIInputImageKey, sourceImage, @"inputBrightness", [NSNumber numberWithFloat:0.0], @"inputContrast", [NSNumber numberWithFloat:1.1], @"inputSaturation", [NSNumber numberWithFloat:0.0], nil].outputImage;
    CIImage *output = [CIFilter filterWithName:@"CIExposureAdjust" keysAndValues:kCIInputImageKey, blackAndWhite, @"inputEV", [NSNumber numberWithFloat:0.7], nil].outputImage;

    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef cgiimage = [context createCGImage:output fromRect:output.extent];
    imgFX = [UIImage imageWithCGImage:cgiimage];

    if (cgiimage) {
        CGImageRelease(cgiimage);
    }

    return imgFX;
}

Использование памяти не уменьшается после предупреждения памяти, поэтому это не должно быть проблемой с кешем.

1 ответ

Я запустил ваш код в примере проекта (с ARC), и он не дает никаких утечек или дополнительных выделений. CFData по существу не имеет отношения к CIFilter подклассы, но к CIImage, Проблема в другом.

Другие вопросы по тегам