gpt4 book ai didi

iphone - 当我使用 addChildViewController 时未调用 dealloc

转载 作者:行者123 更新时间:2023-12-03 21:01:46 24 4
gpt4 key购买 nike

我正在使用下面的代码将 View 添加为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 是 MenuVC,其中我添加多个 ViewControllers 作为 childview。我将 MenuVC 称为 pushViewController 因此,当我在 MenuVC 中时,我可以将 VideoListVC 视为 subview 。当我调用 popViewControllerAnimated 时,未调用 MenuVC 以及 VideoListVCdealloc 方法。所以问题是 ViewController 内存没有释放,Apps 内存因此不断增加。最后,当我连续20到25分钟浏览应用程序时,应用程序崩溃了。

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

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

最佳答案

1)你的第二行应该是

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

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

3) 我不知道这是否重要,但是 Apple View Controller Programming Guide for iOS 的 list 14-1显示添加 childVC 时的另一个序列:

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

希望这有帮助。

关于iphone - 当我使用 addChildViewController 时未调用 dealloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18270605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com