UIImagePickerController释放我的视图和控制器

| 我的应用程序中有5个选项卡,第五个选项卡是“设置”选项卡(位于UINavigationController内部),其中一个选项是用户可以编辑个人信息并选择个人资料图片的位置。 触发UIImagePickerController(相机模式)并按“取消”(我什至不打算拍照)后,所有内容均恢复为原始状态,在第一个选项卡中,所有视图和控制器均由iOS释放并重新创建。用户在设置中已更新但未保存的所有内容都消失了。 如何避免这种情况? 注意:我使用的是UIImagePickerController的单例实例,在Instruments中没有发现泄漏。当我启动选择器时,“接收到的内存警告。级别= 1”会不断出现。 您将成为救生员-谢谢! -编辑- 找到了: 我使用的是自定义标签栏(UIView),因此在设置中,我从该自定义标签栏控制器(应用程序中的主菜单)呈现UIImagePickerController模态(否则,选择器将位于其下方)。 我重新构建了标签栏,所以现在自定义视图只是标准UITabBar上的子视图,现在我正在调用[self presentModalViewController:imagePickerController animation:YES];在我的应用设置中,效果很好。 因此,结论是当您从另一个控制器而不是从“自我”呈现图像选择器时,图像选择器的行为异常。     
已邀请:
        听起来您没有正确处理内存警告。在模拟器中,您可以选择\“ Simulate Memory Warning \”以模拟发生的情况。 长话说,如果视图没有超级视图,
-[UIViewController didReceiveMemoryWarning]
将释放其视图。有三种简单的方法可以解决此问题: 覆盖
-didReceiveMemoryWarning
无所事事。 将状态保存在“ 2”中,应始终在视图卸载之前调用该状态(除非视图从未出现在第一位)。 用户编辑状态时保存状态,方法是立即保存状态(如果没有取消按钮),或者保存到视图控制器中的属性/ ivar(如果仅在用户未单击“取消”的情况下保存)。 您可能还想考虑如果您的应用程序被后台杀死了会发生什么...     
        您可以做的是为所有字段创建变量,并将用户字段的内容写入这些变量,然后在拍摄或取消图像时,将所有这些字段写回并释放变量。基本上,您临时保存所有字段,然后将其还原。     

要回复问题请先登录注册