分配对象的潜在泄漏 - UIViewController

时间:2011-01-11 03:18:00

标签: iphone memory-management memory-leaks uiview uiviewcontroller

我的应用是基于浏览的应用。 我有3个viewcontrollers。 (主,次,细节) 每个viewcontroller都有一个UIView。 在MainViewcontroller中,有一个启动subView的按钮。 方法如下。

  

- (IBAction)LaunchSubView:(id)sender {

subViewcontroller *viewController = [[subViewcontroller alloc] init];

UIView *currentView = self.view;
[UIView transitionFromView:currentView 
                    toView:viewController.view 
                  duration:0.5 
                   options:UIViewAnimationOptionTransitionFlipFromLeft   
                completion:^(BOOL finished){}];

}

当我尝试构建和分析时,我收到了这个警告。 第54行分配的对象的潜在泄漏并存储在'viewController'中 我在transitionFromView方法和subViewcontroller * viewController = [[[subViewcontroller alloc] init] autorelease]之后尝试了[viewController release];两种方式都会导致应用崩溃。知道我想做什么吗?提前感谢任何帮助。 =)

2 个答案:

答案 0 :(得分:1)

transitionFromView:toView:duration:options:completion:不是正确的使用方法。您应该使用presentModalViewController:animated:

如果您阅读transitionFromView:toView:duration:options:completion:的文档,则说明:

  

此方法仅修改视图层次结构中的视图。它不会以任何方式修改应用程序的视图控制器。例如,如果使用此方法更改视图控制器显示的根视图,则您有责任相应地更新视图控制器以处理更改。“

答案 1 :(得分:0)

尝试使用

subViewcontroller *viewController = [[subViewcontroller alloc] initWithNibName:@"name of you nib file" bundle:@"if you have a bundle otherwise nil"]

并在方法结束之前释放viewController对象 像这样

[subViewcontroller release];