Iphone 自动释放ViewController内存管理
在我的mainViewController中,我正在添加来自另一个ViewController的视图。完成后,我将删除它的视图。管理此问题的正确方法是什么?在哪里释放视图控制器Iphone 自动释放ViewController内存管理,iphone,objective-c,ios,xcode,cocoa-touch,Iphone,Objective C,Ios,Xcode,Cocoa Touch,在我的mainViewController中,我正在添加来自另一个ViewController的视图。完成后,我将删除它的视图。管理此问题的正确方法是什么?在哪里释放视图控制器 mainVc.m -(void)showView { helpPage *elementController = [[helpPage alloc] init]; [self.view addSubview:elementController.view]; } helpPage.m -(void)remov
mainVc.m
-(void)showView {
helpPage *elementController = [[helpPage alloc] init];
[self.view addSubview:elementController.view];
}
helpPage.m
-(void)removeView {
[self.view removeFromSuperview];
}
由于您在该mainVc实例中的控制器上调用了alloc init,因此该mainVc实例拥有释放控制器的权限 当它调用addSubView时,它将保留视图(并添加到视图层次结构),当它从superview中删除时,它将被释放。此时,当视图被释放时,创建该视图的控制器仍然保留该视图。当两者都发布视图时,它将消失 以下是一篇相关的SO帖子:
我想你在找这样的东西
mainVc.m
-(void)showView {
helpPage *elementController = [[helpPage alloc] init];
[self.view addSubview:elementController.view];
[elementController release];
}
helpPage.m
-(void)removeView {
[self.view removeFromSuperview];
}
当然,我还没有看到您的代码的其余部分,所以这可能不是您想要的。然而,在内存分配方面,任何时候您alloc
某个东西时,都必须稍后释放它。对于视图和视图控制器,添加该视图或视图控制器后,可以释放您“分配”的副本