我注意到我使用 GPUImage 的次数越多,我的应用程序占用的内存就越多(使用 Instruments 来监控内存使用情况)。
例如,我以不同的方法使用每个过滤器:
(UIImage*)ToonFilter:(UIImage*)theImage
{
GPUImageSmoothToonFilter *smoothToonFilter = [[GPUImageSmoothToonFilter alloc] init];
[smoothToonFilter setTexelHeight:0.0025];
[smoothToonFilter setTexelWidth:0.0025];
return [smoothToonFilter imageByFilteringImage:theImage];
}
(UIImage*)SketchFilter:(UIImage*)theImage
{
GPUImageSketchFilter *sketchFilter = [[GPUImageSketchFilter alloc] init];
[sketchFilter setTexelHeight:0.003];
[sketchFilter setTexelWidth:0.003];
return [sketchFilter imageByFilteringImage:theImage];
}
(UIImage*)PixellateFilter:(UIImage*)theImage
{
GPUImagePixellateFilter *pixellateFilter = [[GPUImagePixellateFilter alloc] init];
[pixellateFilter setFractionalWidthOfAPixel:0.01;
return [pixellateFilter imageByFilteringImage:theImage];
}
这就是我使用这些过滤器的方式(testImage 是 UIImage):
testImage = [self SketchFilter:testImage];
testImage = [self PixellateFilter:testImage];
如果我只是一遍又一遍地循环通过这些过滤器,而不做任何其他事情,应用程序会占用越来越多的内存。
我究竟做错了什么?一旦我不再需要它,如何释放内存?