在我的mainViewController中,我正在添加另一个ViewController的视图。完成后我将删除它的视图。管理这个的正确方法是什么?我在哪里发布视图控制器?
mainVc.m
-(void)showView {
helpPage *elementController = [[helpPage alloc] init];
[self.view addSubview:elementController.view];
}
helpPage.m
-(void)removeView {
[self.view removeFromSuperview];
}
答案 0 :(得分:0)
由于您在mainVc的该实例中的控制器上调用了alloc init,因此mainVc的该实例拥有释放控制器的权限。
当它调用addSubView时,它将保留视图(并添加到视图层次结构),当它从superview中删除时,它将被释放。此时,当它被释放时,创建视图的控制器仍然保留它。当两者都释放了视图时,它就会消失。
这是一篇相关的SO帖子:
答案 1 :(得分:0)
我认为你正在寻找像这样的东西
mainVc.m
-(void)showView {
helpPage *elementController = [[helpPage alloc] init];
[self.view addSubview:elementController.view];
[elementController release];
}
helpPage.m
-(void)removeView {
[self.view removeFromSuperview];
}
当然,我还没有看到你的其余代码,所以这可能不是你想要的。但是,就内存分配而言,只要您alloc
某事,就必须在以后发布。对于视图和视图控制器,一旦添加了该视图或视图控制器,您就可以release
复制“分配”。