4

割り当てられたメモリが多すぎるという問題があります。アプリの割り当てメモリが最大 100MB に達しました。はい...私は使用してARCいます。割り当てられたメモリのほとんどはCFData(私が理解しているように、CoreImageフィルターです)によるものです。画像にフィルターを適用した後、CFData割り当てられたメモリは最大 1.3 MB 増加し、割り当ては解除されません。

メモリ使用量を示す計測器

コードは次のようになります。

+(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;
}

メモリ警告の後もメモリ使用量は下がらないため、キャッシュの問題ではないはずです。

4

1 に答える 1