2012-09-17 173 views
1

我一直在寻找SO来解决这个问题,但我还没有找到任何解决我的问题的东西。 所以这里是问题:UIImagePickerController白色屏幕

我的应用程序有时会加载一个白色屏幕,当它应该加载按钮触摸上的UIImagePickerController。

这是一个内存问题,因为这只有在内存警告触发时才会发生。 看起来内存警告在两个视图控制器之间的转换过程中释放原始viewcontroller(加载imagepicker的视图控制器)。

这导致没有原始的viewcontroller,也没有加载UIImagePickerController(因为它没有父级),换句话说就是白色的屏幕。

另外值得一提的是,我编程解雇内存警告之前和“呈现”的VC蚁后它不会重现该问题:

[[UIApplication sharedApplication] _performMemoryWarning]; 
[self presentModalViewController:picker animated:YES]; 
[[UIApplication sharedApplication] _performMemoryWarning]; 

任何帮助表示赞赏!

+0

你将不得不考虑使用较少的内存,检查是否清理所有资源首先。如果您关闭了didReceiveMemoryWarning中的UIImagePickerController,会发生什么情况? – ggfela

+0

问题是原始的vc没有收到任何内存警告。任何想法如何重现场景? – TompaLompa

+0

在模拟器中,你可以做硬件 - >模拟内存警告 – ggfela

回答

0

然后,我会:

  1. 如果你可以直接检查:检查viewWillAppear如果 UIImagePicker被加载,如果需要手动加载它。
  2. 如果您不能直接检查:覆盖您的自定义UIViewController子类中的didReceiveMemoryWarning方法。设置此功能的布尔像imagePickerNeedsReload = YESviewWillAppear检查这个标志,并进行1
+0

问题是原始的vc没有收到任何内存警告。任何想法如何重现场景? – TompaLompa

+0

写一些简短的应用程序,即在20秒内需要大量内存,然后在你之前开启。你肯定会得到记忆警告。 –

+0

您可能会追查从应用程序委托向下查看内存警告的调用链,查看控制器以检查事件传播是否已正确设置,并且所有vc都收到警告 –