使用CIFilter输出动画UIImageView会导致iOS内存分配和崩溃

时间:2014-06-05 10:39:14

标签: ios objective-c uiimageview core-image cifilter

我已使用以下代码

添加了Core Image过滤器
CIImage *beginImage = [CIImage imageWithCGImage:self.originalImage.CGImage];

CIFilter *filter = [CIFilter filterWithName:@"CISepiaTone"
                                      keysAndValues: kCIInputImageKey, beginImage,
                            @"inputIntensity", @0.8, nil];

CIImage *outputImage = [filter outputImage];

UIImage *imageWithFilter = [UIImage imageWithCIImage:outputImage];

self.showImgView.image = imageWithFilter;

但是当我尝试动画这个self.showImgView时,它会立即增加内存分配并上升到400MB - 600MB然后崩溃。

如果有人有任何建议,请分享。

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

根本问题是你必须非常小心地在iOS应用程序中分配图像,因为图像会占用大量内存。如果你分配了大量的图像,那么它会占用更多的内存。在您的特定情况下,您将需要遍历代码并确定为什么要保留UIImage或CIImage的引用。另请参阅this answer了解iOS应用程序的一些常规内存使用经验法则。