发布子视图并管理内存

时间:2014-04-18 14:16:28

标签: ios memory-management view

我在main.m类文件中有以下代码

-(void)switchView:(UIView *)view1 toView:(UIView *)view2{ 
[UIView beginAnimations:@"Animation" context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:YES];    
[window addSubview:view2];

[UIView commitAnimations];
    [view1 release];
}

我以这种方式从外部文件调用此方法:

-(IBAction)menuChangeLanguage:(id)sender{
main *delegate = (main *)[[UIApplication sharedApplication] delegate];
viewController *newView = [[viewController alloc] initWithNibName:@"newController" bundle:nil];
[delegate switchView:self.view toView:newView.view];
}

通过这种方式,我创建了一个新视图并使用现有视图进行切换。即使我将[view1 release]命令放在我调用的方法中,我也可以看到,当我在2个视图之间切换时,内存分配会增加。我做错了什么?

如果我使用分析仪器,它会显示Potential leak of an object stored into 'newView'。我怎么能避免这个?

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试从其viewcontroller中删除视图。 UIviewController具有对其视图的强引用,因此即使从其超级视图中删除,视图也会被视图控制器保留。

看一下Apple UIViewController类reference