使用UIImagePickerController捕获图像时,我遇到内存问题。我的用例要求我一次捕获多达10个图像,并且当用户单击摄像头叠加层中出现的完成按钮时,图像应发送到服务器,同时显示在CollectionView中,关闭UIImagePickerController实例。内存警告UIImagePickerController
在捕获第10张图像时,我手动关闭拾取器并将图像发送到服务器并将其显示在collectionView中。由于我有一些图像阈值计数,我使用数组来保存图像,每次点击“完成”按钮或用户捕捉第10张图像时,我都会清空数组。
我最初认为,我遇到了内存问题,因为collectionView显示的图像没有调整大小,因此我调整了图像大小并显示在collectionView中。
然后,Google搜索后,我发现内存泄漏可能发生在调整图像大小,我也修复它,但我仍然遇到内存问题和每次在相同的图像数约45张图像(捕获10张图像4次然后在iPad4的第5次捕获5张图像后获得内存警告和崩溃)。然后,我在didFinishPickingMediaWithInfo中评论了我所有的代码,除了捕获图像,我的应用程序没有进行任何处理,并且仍然在第45张图像中获取内存警告。
我不知道是什么问题。 UIImagePickerController缓存它捕获的图像或类似的东西?
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
//All code in this section is commented out and no processing is done in any part of the code with the images captured.
}
内存警告发生在两种类型 - > 1.你IMAGESIZE很重2.您的设备内存不足 –
的事情是我想知道的内存警告是如何造成的。如果我只是捕捉图像而对它无所作为,我怎么能最终发出内存警告。我不是将捕获的图像写入任何内存位置,我甚至没有像调整它的大小那样处理图像。只需连续捕捉图像,并在didFinishPickingMediaWithInfo中不做任何事情。 –
我认为问题不是来自图像或文件的大小,而是代码中存在一个保留周期。当有两个或更多的对象持有相同的参考时,就会发生这种情况.. – RoccoBerry