1

我用视图控制器A作为根视图控制器制作了UINavigationViewController,然后推送视图控制器B。当我在模拟器中模拟内存警告时,只调用了A的didReceiveMemoryWarning。当然,我在 A 和 B 中都覆盖了 didReceiveMemoryWarning。最终我通过在 A 的 didReceiveMemoryWarning 中调用 B 的 didReceiveMemoryWarning 来解决这个问题。但是我不知道为什么会自动调用 B 的方法。A 的 viewDidUnload 和 B 的 viewDidUnload 都按预期调用,因为我在从 B 呈现模态视图控制器时触发了警告。

如果视图控制器 B 是导航控制器的根,则调用它的 didReceiveMemoryWarning 没有问题。

4

1 回答 1

1

我见过的最常见的原因是:

  • 您正在调用[[NSNotificationCenter defaultCenter] removeObserver:self]您的视图控制器之一。您不应该这样做,因为会UIViewController注册此类事件的通知。

  • 您对视图控制器层次结构做了一些奇怪的事情,例如在不使用 iOS 5 包含方法或普通视图控制器表示方法(presentViewController: 和朋友)的情况下添加另一个视图控制器的视图作为子视图。

于 2012-08-26T14:32:34.830 回答