我使用下面的代码将视图添加为addChildViewController
。
VideoListVC * videoListVC = [[VideoListVC alloc] initWithNibName:@"VideoListVC" bundle:nil];
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:videoListVC];
navController.view.frame = self.view_Container.bounds;
videoListVC.view.frame = navController.view.bounds;
[self addChildViewController:navController];
[navController didMoveToParentViewController:self]
[self.view_Container addSubview:navController.view];
self is MenuVC
我在其中添加了多个ViewControllers
childview
。我将MenuVC
称为pushViewController
所以当我在MenuVC
时,我可以看到VideoListVC
作为子视图。当我调用popViewControllerAnimated
那个时间dealloc
方法没有调用MenuVC
以及VideoListVC
时。所以问题是ViewController
内存不释放,应用程序内存不断增加。最后,当我连续使用app 20 to 25 min
时,应用程序崩溃。
解决这个问题的方法是什么?我曾尝试removeFromParentViewController
但没有取得任何成功。
我的代码addChildViewController
??
答案 0 :(得分:2)
1)你的第二行应该是
UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:videoListVC];
2)如果你不使用ARC,你应该在最后发布你的VideoListVC和navController,因为由于initWithRootViewController调用而保留了videoListVC,并且由于addChildViewController而保留了navController。
3)我不知道这是否重要,但Apple View Controller Programming Guide for iOS的清单14-1在添加childVC时显示了另一个序列:
[self addChildViewController:content]; // 1
content.view.frame = [self frameForContentController]; // 2
[self.view addSubview:self.currentClientView];
[content didMoveToParentViewController:self]; // 3
希望这有帮助。