当我的容器UIViewController被释放或卸载时,我是否需要清理我的子UIViewControllers?

3

我正在创建一个简单的容器 UIViewController,其中包含一个子视图控制器 UIViewController

我是否需要在我的容器 UIViewControllerdeallocviewDidUnload 方法中发送子视图控制器的 willMoveToParentViewController:removeFromParentViewController

我正在使用 ARC

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;

虽然我不知道你的情况,但希望这能帮助其他可能遇到和我一样问题的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接