将其作为子视图添加到主视图后如何释放对象?

时间:2011-11-16 09:04:15

标签: iphone ipad memory-management

我正在使用两个视图控制器。在第一视图控制器的按钮动作上,我将第二视图控制器的视图作为子视图添加到第一视图控制器。我无法释放第二个视图控制器,所以我得到secondviewcontroller对象的内存泄漏。如何在将其添加为子视图后释放第二个视图控制器对象?

 -(IBAction)buttonclick {
    secondviewcontroller * obj = [[secondviewcontroller alloc]init];
    [self.view addsubview:obj.view];
   [obj release]; //if i release it here the view is also getting released and only black screen is displayed.how to release the second view controller obj after this?
    }
抱歉,之前输错了

2 个答案:

答案 0 :(得分:1)

你真的不应该这样做。

在iPhone应用程序中,您应始终为每个屏幕显示一个视图控制器。 我建议将第二个视图控制器中的任何逻辑移动到要添加的视图的后备类中。

如果您已经设置了两个视图控制器,则在第一个视图控制器中保留对第二个视图控制器的引用(保留),并在第二个视图从其超级视图中删除时释放第二个视图控制器(和在第一个视图控制器的dealloc中。)

答案 1 :(得分:-1)

将您的代码重写为:

-(IBAction)buttonclick
{
    secondviewcontroller * obj = [[secondviewcontroller alloc]initWithNib:@"nibname" bundle:nil];
    [self.view addsubview:obj];
    [obj release]; 
}