Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 自动释放ViewController内存管理_Iphone_Objective C_Ios_Xcode_Cocoa Touch - Fatal编程技术网

Iphone 自动释放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

在我的mainViewController中,我正在添加来自另一个ViewController的视图。完成后,我将删除它的视图。管理此问题的正确方法是什么?在哪里释放视图控制器

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
某个东西时,都必须稍后释放它。对于视图和视图控制器,添加该视图或视图控制器后,可以
释放
您“分配”的副本