繁体   English   中英

当呈现为模态视图控制器时,ARC UINavigationController堆栈未被释放

[英]ARC UINavigationController stack not getting deallocated when presented as modal view controller

第一:我将我的应用程序移植到ARC,一切似乎都有效。 但是现在我发现了一个问题:我有一个UINavigationController,它在模块上呈现了一些UIViewControllers。 但是当我关闭模态视图控制器时,堆栈中的视图控制器似乎没有被释放。 这是我做的:

UIViewController* root = [[UIViewController alloc] init];
UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:root];
[self presentModalViewController:navi animated:TRUE];

然后从根目录推出更多视图控制器,但这并不重要。 事实是我后来打电话

[self dismissModalViewControllerAnimated:TRUE];

root不会被释放。 当然在我的代码中,root是UIViewController的子类,我跟踪dealloc和viewDidUnload,但没有任何东西被调用。

有任何想法吗?

你的导航控制器里面有什么? 可能是其他东西(可能是导航控制器中的视图控制器)是罪魁祸首,这导致链条意味着导航控制器不会被释放。

无论哪种方式,您发布的代码都是正确的,因此如果您的导航控制器在调用dismissModalViewController后没有被释放, dismissModalViewController它会建议其他东西仍然有一个对它或其依赖项的活动引用。 我知道这不回答你的问题,但你可能不得不四处寻找。

由于您没有显示实际代码,因此很难判断根视图控制器发生了什么。

但是,使用ARC,如果你有一个指向对象的强指针,它就不会被释放。 我怀疑你在将它添加到导航控制器后仍然坚持使用此控制器。

但是,如果没有看到您的代码,我无法分辨。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM