1

我有一个UIImagePickerController作为我的视图控制器的综合属性。UIImagePickerController不会解除内存警告

一般来说,它工作正常(采取/选择照片,回电等)。但是,当我收到一条内存警告(在视图控制器上调用了didReceiveMemoryWarning)时,虽然该应用程序似乎优雅地处理它(viewDidLoad被调用以使视图无需任何多余的视图而重新设置等 - 应用程序不会崩溃)和UIImagePickerController让我拍照,UIImagePickerController的视图(在这种情况下是相机)不会被解雇。相机仅保持在屏幕上,并且“重拍”和“使用”按钮呈灰色。

我已经尝试在viewDidUnload中设置self.imagePicker = nil,并且也尝试过不这样做(因此视图控制器在内存警告后需要关闭它时没有“忘记”它)。

在内存警告后拍摄照片后,imagePicker成功回调(didFinishPickingMediaWithInfo),但imagePicker视图保留在屏幕上。

任何帮助/想法将不胜感激。

+0

没有内存警告,它能正常工作吗?你是否从其超级视图中移除选取器视图? – Eiko 2010-07-02 11:30:12

+0

它工作正常。在这两个imagePickerControllerDidCancel和didFinishPickingMediaWithInfo我使用: [self.imagePicker dismissModalViewControllerAnimated:YES]; – 2010-07-02 11:34:14

+3

如果您希望图像采集器在应用程序收到内存警告时被解散,您可能需要在didReceiveMemoryWarning中解除它:...我不认为操作系统会假定用户已完成图像采集,除非它被解散或饰面。 – Kalle 2010-07-02 12:07:07

回答

3

非常感谢卡勒的评论和基本上,解决问题。

答案是,我不仅需要确保imagePicker没有被设置为无viewDidUnload,但我然后需要在didReceiveMemoryWarning中删除/关闭它。当你知道答案时很简单 - doh! ; o)

再次感谢StackOverflow。

+1

很高兴听到你解决了它。 :) – Kalle 2010-07-03 09:01:44