UIViewController正在保留

时间:2012-01-25 14:02:36

标签: iphone ios4 uiviewcontroller

在我的应用程序中,我有三个UIViewController个对象。

V1 - > V2 - > V3

当我从V2移动到V3时,我使用push并使用pop从V3到V2。但不知何故,V3的对象仍被保留。

我认为当我们弹出时,会删除堆栈中的所有对象 - V3对象。但是,在这种情况下不会发生这种情况。

有人可以建议如何解决此问题吗?

由于

4 个答案:

答案 0 :(得分:1)

 V3 *v3 = [[[V3 alloc] initWithNibName:@"V3" bundle:nil] autorelease]; 
             [self.navigationController pushViewController: v3 animated:YES];

这是在导航栏中推送控制器的标准方法..

要么你错过了v3上的autorelease或release,要么你将它保留在其他地方..

答案 1 :(得分:0)

正如您使用导航控制器推动视图控制器一样,在下面添加一行以释放它。

向我们展示一些您正在做的事情的代码。然后我们可以准确地告诉你。

答案 2 :(得分:0)

除了Shubhank所说的,请确保在UIViewController本身内平衡这些方法中的保留和释放:

viewDidLoad& viewDidUnload

viewWillAppear:& viewWillDisappear:

还要确保在dealloc方法中释放任何带有“retain”或“copy”属性的属性。

只要您在dealloc中正确清理所有内容,并且UIViewController本身的保留/释放计数是平衡的(请参阅Shubhank的回答),您将没有问题,所有内容都将按预期发布。

答案 3 :(得分:-1)

当您使用导航推送时,它将调用下一个视图的方法

- (void)viewDidLoad{
}

当你回到之前的视图时,只会调用

- (void)viewWillAppear:(BOOL)animated{
}

现在,当您使用pop导航回来然后它没有调用您的viewDidLoad时会发生什么事情,因此您的NSMutableArray以及您在该视图中分配的任何对象都不会被分配.. < / p>