我在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'
。我怎么能避免这个?
答案 0 :(得分:0)
问题是您正在尝试从其viewcontroller中删除视图。 UIviewController具有对其视图的强引用,因此即使从其超级视图中删除,视图也会被视图控制器保留。
看一下Apple UIViewController类reference