核心映像和内存泄漏,swift 3.0

核心映像和内存泄漏,swift 3.0,swift,memory-leaks,ios10,core-image,Swift,Memory Leaks,Ios10,Core Image,我有一个问题,我尝试在一些扩展名为3000x2000的图像上使用过滤器,当我这样做时,RAM upper和应用程序出现致命错误“didReceiveMemoryWarning” 这不是内存泄漏;这是因为你实际上使用了太多的内存。并不是使用CIFilter造成了问题;事实上,您正试图将所有这些大型UIImage对象保存在单个数组中的内存中: var result = [UIImage]() // ... result.append(newImage) 不要那样做。这不是内存泄漏;这是因为你实际上

我有一个问题,我尝试在一些扩展名为3000x2000的图像上使用过滤器,当我这样做时,RAM upper和应用程序出现致命错误“didReceiveMemoryWarning”

这不是内存泄漏;这是因为你实际上使用了太多的内存。并不是使用CIFilter造成了问题;事实上,您正试图将所有这些大型UIImage对象保存在单个数组中的内存中:

var result = [UIImage]()
// ...
result.append(newImage)
不要那样做。

这不是内存泄漏;这是因为你实际上使用了太多的内存。并不是使用CIFilter造成了问题;事实上,您正试图将所有这些大型UIImage对象保存在单个数组中的内存中:

var result = [UIImage]()
// ...
result.append(newImage)

不要这样做。

然后如何在过滤后存储图像,我做了10张照片,并尝试对它们进行过滤并保存到手机。你可以保存它们,但你需要立即保存每一张,而不是等到过滤了10张。你没有记性。同样地,你也不可能拍10张照片并将它们全部保存在内存中。最初将每个文件保存到磁盘。仅加载一张照片进行处理,对其进行处理,保存处理后的照片,然后释放两张照片。重复一遍。很简单。如果我用“result.append(newImage)”注释行,程序将使didReceiveMemoryWarning的bcs崩溃。因为您仍然从
图像开始:[UIImage]
。您没有空间容纳一组图像。此外,这一行是对内存的极大浪费:
UIImage(cgImage:cgImage!,scale:img.scale,orientation:img.imageOrientation)
您已经有了cgImage。结束了。这是你的照片资料。将其保存到照片库。然后如何在筛选后存储图像,我做了10张照片,并尝试对它们进行筛选并保存到手机。你可以保存它们,但你需要立即保存每一张,而不是等到筛选了10张照片。你没有记性。同样地,你也不可能拍10张照片并将它们全部保存在内存中。最初将每个文件保存到磁盘。仅加载一张照片进行处理,对其进行处理,保存处理后的照片,然后释放两张照片。重复一遍。很简单。如果我用“result.append(newImage)”注释行,程序将使didReceiveMemoryWarning的bcs崩溃。因为您仍然从
图像开始:[UIImage]
。您没有空间容纳一组图像。此外,这一行是对内存的极大浪费:
UIImage(cgImage:cgImage!,scale:img.scale,orientation:img.imageOrientation)
您已经有了cgImage。结束了。这是你的照片资料。将其保存到照片库中。