3

我正在添加一个子视图控制器,如下所示:

loginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    loginViewController.delegate = self;

[self addChildViewController:loginViewController];
[self.view addSubview:loginViewController.view];
loginViewController.view.frame = self.view.bounds;
[loginViewController didMoveToParentViewController:self];

并将其删除如下:

[loginViewController willMoveToParentViewController:nil];
[loginViewController.view removeFromSuperview];
[loginViewController removeFromParentViewController];

如果我理解正确,应该在 LoginViewController 中触发 dealloc 但它不会?我错过了什么吗?

4

1 回答 1

0

不完全的。删除控制器的视图与被释放的控制器无关,只是控制器的视图(由控制器保留,因此不会被释放。

你有[self addChildViewController:loginViewController];,你把它存放在某个地方吗?也许是一个数组?如果是这种情况,那就是你的泄漏。您需要从放置它的任何位置将其删除

于 2012-12-04T14:06:47.597 回答