У меня возникают массивные утечки памяти, которые не отображаются с помощью инструмента «утечки». Я всплываю Modal View Controller и применяю 2 фильтра CoreImage к 4 или 5 различным изображениям. Используя инструменты, я вижу, что память поднимается примерно на 40-50 МБ, поскольку эти изображения создаются, но даже после того, как я увольняю диспетчер Modal View, я никогда не получаю эту память, и приложение выйдет из строя после повторения этого процесса 2 или 3 раза , Я рад за любой совет, который вы можете предоставить, потому что это сводит меня с ума. Ниже рассмотренный метод:Загадочная утечка памяти CoreImage с использованием ARC
UIView *finalView = [[UIView alloc] initWithFrame:CGRectMake(1024, 0, 1792, 1345)];
UIImageView *templateImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1792, 1345)];
templateImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[theme objectForKey:@"template_background"]]];
//CI background Setup
NSString *filePath5 = [[NSBundle mainBundle] pathForResource:[theme objectForKey:@"template_background"] ofType:@"png"];
NSURL *fileNameAndPath5 = [NSURL fileURLWithPath:filePath5];
@autoreleasepool {
finalBackBeginImage = [CIImage imageWithContentsOfURL:fileNameAndPath5];
finalBackImage = [CIFilter filterWithName:@"CIHueAdjust" keysAndValues:@"inputAngle", [NSNumber numberWithFloat:[[boothPrefs objectForKey:@"templateBackground_hue"] floatValue]*6.28], @"inputImage", finalBackBeginImage, nil].outputImage;
finalBackImage = [CIFilter filterWithName:@"CIColorControls" keysAndValues:@"inputSaturation", [NSNumber numberWithFloat:([[boothPrefs objectForKey:@"templateBackground_saturation"] floatValue] * 5)], @"inputImage", finalBackImage, nil].outputImage;
finalBackContent = [CIContext contextWithOptions:nil];
CGImageRef cgimgFinalBack =
[finalBackContent createCGImage:finalBackImage fromRect:[finalBackImage extent]];
UIImage *newFinalBackImg = [UIImage imageWithCGImage:cgimgFinalBack];
[templateImageView setImage:newFinalBackImg];
CGImageRelease(cgimgFinalBack);
}
[finalView addSubview:templateImageView];
Для справки, некоторые из изображений модифицируются 1024 х 768 PNGs и несколько других крупнее, может быть 1700 х 1300. Я понимаю, почему это занимает много памяти грызть эти фильтры, я просто дон Не понимаю, почему он не освобождается. –
Вы удаляете свой шаблонImageView, прежде чем вы вызываете эту функцию в следующий раз –
Нет, каждое изображение, которое добавлено в finalView, имеет собственный UIImageView. templateImageView - это просто первый из них. –