在UINavigationController的视图控制器堆栈中的某些视图控制器中未调用didReceiveMemoryWarning

时间:2012-08-26 14:26:51

标签: ios didreceivememorywarning

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 您正在其中一个视图控制器中调用[[NSNotificationCenter defaultCenter] removeObserver:self]。你不应该这样做,因为UIViewController注册了这样的事情的通知。

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