popToRootViewControllerAnimated问题

时间:2011-03-03 23:37:05

标签: iphone ios4 ios-simulator

我有下一个问题 - 为什么我的应用程序在我打电话时不等待

[navController popToRootViewControllerAnimated:NO];
... set new viewcontrollers here

我想:

1 /通过调用popToRootViewControllerAnimated杀死所有viewcontrollers - 使用NO参数 - 然后我想我可以立即设置新的视图控制器

2 /设置新视图控制器

但在我的日志中我会看到下一个:

  

调用poptorootview控制器

     poptorootview之后的

代码

     

dealloc of views and controller(因为我称之为poptorootview)

为什么?如何检测所有视图都被杀死并且导航控制器弹出到root? 谢谢,

1 个答案:

答案 0 :(得分:1)

最终将释放弹出的视图控制器(除非另一个对象保留它),但引用未准确指定何时以及如何释放它。如果没有立即释放,我不会感到惊讶; UIKit对象可以使用视图控制器进行过渡动画。它可能是自动释放未释放,这可能解释您的日志。另外,在UINavigationController中我不会感到惊讶,多个对象同时保留了堆栈中的视图控制器。简而言之,没有关于释放弹出视图控制器的记录行为。我们可以肯定的是,它会在某个时刻被释放,否则会导致内存泄漏。

因此,您不知道视图控制器何时实际取消分配。即使您发现它可能会在没有通知的情况下发生变化。但是,您可以使用UINavigationController的委托方法确定视图何时消失。