viewWillLayoutSubviews在applicationDidEnterBackground通知后调用

时间:2013-08-23 15:03:18

标签: ios lifecycle

我遇到的问题是我的应用程序在睡眠时崩溃,有时在家中崩溃。我在一个名为BAD_ACCESS的帖子中收到gpus_ReturnNotPermittedKillClient错误,它告诉我我的应用程序正在后台进行UI更改,这对我的理解是不行的。因此,我正在逐步查看我的代码以查看home / sleep上发生的情况,并且我发现我的VC -viewWillLayoutSubviews方法中的断点在-applicationWillResignActive和{{1}中的断点之后被击中通知(我试图从异步回调函数中停止所有更新)。

这似乎没有任何意义。从应用程序的角度来看,如果在后台进行UI更新并不酷,为什么在后台调用-appplicationDidEnterBackground之后呢?

编辑:即使我的应用程序没有崩溃,它似乎也会这样做。它可能只是让事情变得无序吗?

1 个答案:

答案 0 :(得分:1)

我认为你只需要容忍这一点。根据此tech note,您无法在后台执行任何GLES渲染。我的建议是你的应用程序在调用applicationWillResignActive时设置一个标志,然后在做任何渲染工作之前检查那个标志并且不做这项工作(也许只需要调用-setNeedsDisplay查看,以便如果您的应用再次变为活动状态,它将知道绘制该视图)。你似乎对viewWillLayoutSubviews被称为“迟到”的事实感到困扰,但我不明白这是多么重要。 (即布局!=渲染)如果你的-drawRect:方法在applicationDidEnterBackground之后被调用,我会感到惊讶,但我仍然会说你有责任检查一个标志而不是渲染你的app在后台。