3

我正在创建一个UIViewController带有单个 child的简单容器UIViewController

我是否需要将孩子发送到我的容器willMoveToParentViewController:和方法中?removeFromParentViewControllerUIViewControllerdeallocviewDidUnload

我在用着ARC

4

1 回答 1

0

这可能会迟到,但我遇到了同样的问题。我用 NSLog 进行了测试,并且没有在子控制器上调用 dealloc 方法。

就我而言,我有一个父控制器有一个子控制器,但是这个父控制器也是另一个超级父控制器的子控制器。

所以,我的解决方案是实现 willMoveToParentViewController 并删除那里的孩子。

- (void) willMoveToParentViewController:(UIViewController *)parent;
{
    if (parent == nil) {
        NSLog(@"removing my self");
        [_childViewController willMoveToParentViewController:nil];
        [_childViewController removeFromParentViewController];
        [_childViewController.view removeFromSuperview];
        _childViewController = nil;
    }
}

但是,在我的例子中,我调用了这个方法,因为这个父级是另一个父级控制器的子级。

// removing the parent from super parent controller
[_parentViewController willMoveToParentViewController:nil];
[_parentViewController removeFromParentViewController];
[_parentViewController.view removeFromSuperview];
_parentViewController = nil;

我不知道你的情况,但希望这能帮助其他可能和我有同样问题的人。

于 2013-01-07T14:10:01.280 回答