У меня проблема со слишком большим объемом выделенной памяти. Мое приложение выделяет память до 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;
}
Использование памяти не снижается после предупреждения о памяти, поэтому это не должно быть проблемой кеша.