我正在创建一个UIViewController
带有单个 child的简单容器UIViewController
。
我是否需要将孩子发送到我的容器willMoveToParentViewController:
和方法中?removeFromParentViewController
UIViewController
dealloc
viewDidUnload
我在用着ARC
我正在创建一个UIViewController
带有单个 child的简单容器UIViewController
。
我是否需要将孩子发送到我的容器willMoveToParentViewController:
和方法中?removeFromParentViewController
UIViewController
dealloc
viewDidUnload
我在用着ARC
这可能会迟到,但我遇到了同样的问题。我用 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;
我不知道你的情况,但希望这能帮助其他可能和我有同样问题的人。