我正在使用 UIImagePickerController 从相机拍照。但是,我发现我的调用控制器(显示在 UIImagePickercontroller 之前显示的控制器)随机被卸载。我记录了 viewDidUnload,它确实被调用了。当相机完成并关闭时,我的控制器的 viewDidLoad 将被调用,不幸的是所有状态现在都消失了。输入的文本或选择的内容等内容将消失。
显然,这与内存不足有关。但这种行为正常吗?我应该处理它吗?这通常不是 modalViewController 的工作方式。通常你展示它然后关闭它,一切都应该完好无损。
在这种情况下避免数据丢失的好方法是什么?我是否需要编写一堆代码来保存完整状态?
发生的事情是你的视图控制器的didReceiveMemoryWarning
正在被调用,然后由于您的视图不可见,因此它正在被卸载。
解决方案是任何想要持久化的数据都应该存储在视图控制器中而不是视图中。
您可以通过提供以下实现来防止这种情况发生didReceiveMemoryWarning
在你的UIViewController
类doesn't call [super didReceiveMemoryWarning]
这是视图卸载发生的地方,但尝试了解正在发生的事情仍然是一件好事。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)