iPhone:为什么模拟内存警告后屏幕变空白?

问题描述:

当我在模拟器上运行我的应用程序,然后我去硬件 - >模拟内存警告它导致我的视​​图变空白(我只看到白色)。有谁知道我可以如何让它不这样做? - 我不想要一个实际的内存警告让我的屏幕变为空白。iPhone:为什么模拟内存警告后屏幕变空白?

谢谢

+0

你是否正在发布视图控制器'didrecievememorywarning'中的当前视图? – thelaws 2011-06-01 01:49:30

+0

不,didreceivememorywarning未触及。所以它只是有一个[超级didreceivememorywarning]在那里...虽然我认为我读的地方,一个memorywarning使当前视图零或什么? – foreyez 2011-06-01 01:55:05

+0

你有什么viewUnload? – tegbains 2011-06-01 02:37:52

我遇到同样的问题。我有一个应用程序,您将看到一个登录屏幕,它将一个主菜单下的NavController按下。主菜单中的每个选择然后推动一个新的视图控制器。如果在菜单项下出现内存警告,则返回到菜单显示空白视图。

这可能比解决问题更掩盖症状,但通过覆盖主菜单的didReceiveMemoryWarning消息(使超级版本未被调用)阻止视图消失。

我喜欢这样比覆盖setView(因为建议here)更好,因为你没有得到有关“-viewDidUnload导致视图重新加载”的讨厌性能警告。

呸,这是主要是因为我把我的导航控制器错误

+2

你设置不正确?我有类似的问题,我的朋友 – 2011-07-28 23:30:10

+1

是的,我们遇到同样的问题,它已经让所有人难住了。 – Oscar 2012-03-06 19:09:06

+0

不要只是说你解决了它,并没有与社区分享 – NSProgrammer 2013-06-20 17:21:50

我得到了同样的问题,现在和我解决了这个问题。

在我来说,我得到了mainViewController的代码,这里面的台词:

- (void)loadView { 
    [super loadView]; 
} 

模拟内存警告系统调用didReceiveMemoryWarning后,你可以检查viewDidUnload被调用后立即,如果你使用的loadView你的代码中该班级称之为重新加载替换旧视图的全新页面。 这会导致一个空白屏幕。

所以要解决我只是评论上述三种线的问题。

+0

我深深地重新思考了这个问题。基本上这个问题可以用一个问题来解释:我们在哪里存储绘制视图的模型?如果答案是无处...结果是空白页面。当系统引发内存警告通知时,所有viewControllers都会运行didReceiveMemoryWarning。之后它的方法viewDidUnload开始清理我们的对象,如果实施。在所有的控制器重新开始调用viewDidLoad之后,视图变黑。如果我们存储了配置,即模型中的图像,viewDidLoad会重新加载视图,否则我们会陷入空白屏幕。 – Gabriele 2011-10-24 22:01:28