UIImagePickerController释放我的视图和控制器

我的应用程序中有5个选项卡,第五个选项卡是设置选项卡(UINavigationController里面),其中一个选项是用户可以编辑个人信息并选择个人资料图片的位置。

在启动UIImagePickerController(相机模式)并按下取消(我甚至没有谈论拍摄照片)后,所有内容都会返回到原始状态,所有视图和控制器都将在iOS上发布并重新创建。 用户在设置中更新并且未保存的所有内容都消失了。

如何避免这种情况?

注意:我正在使用UIImagePickerController的单例实例,在Instruments中找不到任何泄漏。 当我启动选取器时,“接收到的记忆警告。等级= 1”不断出现。

你会成为一个拯救生命的人 - 谢谢!

- 编辑 -

找到了:

我使用的是自定义选项卡栏(UIView),所以在设置中我从该自定义选项卡栏控制器(这是应用程序中的主要部分)呈现UIImagePickerController模式(否则,选择器会在其下面)。

我重建了标签栏,所以现在自定义视图只是一个标准UITabBar上的子视图,现在我正在调用[self presentModalViewController:imagePickerController animated:YES]; 在我的应用程序设置中,它工作得很好。

所以,结论是,当您从另一个控制器呈现图像时,图像选取器会奇怪地起作用,而不是来自“自我”。


听起来你没有正确处理内存警告。 在模拟器中,您可以选择“模拟内存警告”来模拟发生的情况。

-[UIViewController didReceiveMemoryWarning]如果视图没有超级视图, -[UIViewController didReceiveMemoryWarning]会释放视图。 有三种简单的方法来处理这个问题:

  • 覆盖-didReceiveMemoryWarning什么也不做。
  • 将状态保存在-viewDidDisappear: ,在视图被卸载之前应始终调用它(除非视图从未出现在第一位)。
  • 在用户编辑它时保存状态,或者通过立即保持状态(如果你没有取消按钮)或者视图控制器中的属性/ ivar(如果你只想保存,如果用户没有点击取消)。
  • 您可能还想考虑一下如果您的应用程序被隐藏并死亡,会发生什么情况......


    你可以做的是为所有字段创建变量,并将用户字段的内容写入这些变量,然后在获取或取消图像时,将所有这些字段写回并释放变量。 基本上你暂时保存所有的字段,然后恢复它们。

    链接地址: http://www.djcxy.com/p/68373.html

    上一篇: UIImagePickerController releases my views and controllers

    下一篇: Is it possible to know when is constexpr really a constexpr?