Вы можете обернуть вызовы в NSAutoreleasePool
, где их результаты будут объединены. Затем вы можете вызвать [pool pool] для этого пула, и его содержимое будет освобождено, включая изображения.
Обратите внимание, что вы не сможете использовать изображения вне области NSAutoreleasePool, поэтому ваш код может выглядеть примерно так:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
UIImage * scaledImage = [blurMe _imageScaledToSize:CGSizeMake(blurMe.size.width / dblBlurLevel, blurMe.size.width / dblBlurLevel) interpolationQuality:3.0];
UIImage * labelImage = [scaledImage _imageScaledToSize:blurMe.size interpolationQuality:3.0];
UIImage * imageCopy = [[UIImage alloc] initWithCGImage:labelImage.CGImage]; // Gives a non-autoreleased copy of labelImage
[pool drain]; // deallocates scaledImage and labelImage
imgView.image = imageCopy; // retains imageCopy
UPDATE:
Если из-за вышеизложенного все еще возникают проблемы, см. Решение, которое я отправил на этот вопрос . Вопрос состоит в том, чтобы повернуть изображение на 90 градусов вместо того, чтобы масштабировать его, но предпосылка та же (отличается только матричное преобразование). Использование кода, как в ответе, который я опубликовал, даст вам больший контроль над управлением памятью и избавит вас от использования недокументированных API, таких как _imageScaledToSize
.