在解雇时从viewcontroller中删除所有设置

时间:2011-08-11 12:14:49

标签: objective-c

我的项目中有多个viewcontrollers。第一个viewcontroller在应用程序启动时调用,并显示登录屏幕。凭据正确且用户登录时,模态视图将被取消。另一个viewcontroller实例化如下:

[self dismissModalViewControllerAnimated:NO];
Form *formcontroller = [[Form alloc] init];
[self presentModalViewController:formcontroller animated:YES];

当我的其他视图控制器被呈现时,旧视图控制器消失。在我的第二个视图控制器的顶部,我有一个注销按钮,它完全相同,所以它解除了当前的视图控制器并调用另一个像这样:

-(IBAction)logOut:(id)sender{
    [self dissmissModalViewControllerAnimated:NO];
}

在我的观察中消失了:

-(void)viewDidDisappear:(BOOL)animated{
    Postform3ViewController *logincontroller = [[Postform3ViewController alloc] init];
    [self presentModalViewController:logincontroller animated:YES];
}

问题是: 当我按下注销按钮,然后我返回到logincontroller。凭证仍然填写。所以我的结论是第一个视图控制器保留在内存中。我做错了什么?

编辑:

我找到了自己的解决方案。我正在分析我的应用程序,并且找不到任何内存泄漏。所以我决定发布一切。然后我以为我能把一切都弄清楚自己。我在viewDidAppear方法中这样做了:

-(void)viewDidAppear:(BOOL)animated {
  gebruikersnaam.text = @"";
  wachtwoord.text = @"";
  [self.activeTextField resignFirstResponder];
  [super viewDidAppear:animated];
}

1 个答案:

答案 0 :(得分:0)

首先,当您使用presentModalViewControllerpushViewController时,VC会被保留,因此您应该在呈现或推送之后始终将其释放。

其次在第三个代码块中,您看起来正在创建一个logincontroller但是呈现一个formcontroller。也许您想要展示刚刚创建的VC:

[self presentModalViewController:logincontroller animated:animated];

编辑0:对于您的代码,在第一个块中,发布如下:

Form *formcontroller = [[Form alloc] init];

[self presentModalViewController:formcontroller animated:YES];

...

[self dismissModalViewController:formcontroller animated:YES];

[formcontroller release];