2

我正在使用下面的代码将视图添加为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我在其中添加多个ViewControllersas childview。我打电话MenuVCpushViewController所以当我在MenuVC我可以看到VideoListVC子视图。当我调用popViewControllerAnimated那个时间dealloc方法时,它没有被MenuVC调用 VideoListVC。所以问题是ViewController内存没有释放,因此应用程序内存不断增加。最后,当我不断地浏览应用程序时,应用程序崩溃了20 to 25 min

解决这个问题的方法是什么?我试过removeFromParentViewController但没有取得任何成功。

我的代码有什么问题 addChildViewController吗??

4

1 回答 1

2

1)你的第二行应该是

UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:videoListVC];

2)如果你不使用ARC,你应该在最后释放你的VideoListVC和navController,因为videoListVC由于initWithRootViewController调用而被保留,navController由于addChildViewController被保留。

3) 我不知道这是否重要,但 Apple 的iOS 视图控制器编程指南的清单 14-1显示了添加 childVC 时的另一个序列:

 [self addChildViewController:content];                 // 1
 content.view.frame = [self frameForContentController]; // 2
 [self.view addSubview:self.currentClientView];
 [content didMoveToParentViewController:self];          // 3

希望这可以帮助。

于 2013-08-16T10:30:45.687 回答