gpt4 book ai didi

ios - 调用 navigationController popViewControllerAnimated 时不调用 viewController 的 dealloc

转载 作者:可可西里 更新时间:2023-11-01 06:25:21 25 4
gpt4 key购买 nike

我有一个 MyViewController,它基于 UIViewController,我像下面的代码一样使用它:

MyViewController *nextViewController = [[MyViewController alloc] init];
[self.navigationController pushViewController:nextViewController animated:YES];
[nextViewController 释放];

在 MyViewController 中,有一个用户事件,有以下代码:

[self.navigationController popViewControllerAnimated:YES];

现在,我发现,MyViewController的dealloc方法并没有被调用,但是,当我将App切换到后台时,比如传递home键,dealloc方法已经被调用了!这是个大问题!会有很多 MyViewController 不会被释放,当用户转到 MyViewController 并返回时,一次又一次,只有当 App 转到后台时,大量内存才会被释放。

所以,谁能帮我解决这个问题,谢谢!

最佳答案

明显的原因是某些东西保留了您的 viewController。您将不得不仔细查看您的代码。你在你的类(class)中做了任何使用委托(delegate)的事情吗,因为他们有时会保留委托(delegate)。 NSURLConnection 将保留您的类,NSTimer 也是如此。您可以在类(class)中分散代码并记录类(class)的保留计数,并尝试找出位置。在您目前显示的代码中,保留值应该仅为 1,因为该类仅由导航 Controller 保留。

此外,在弹出 View 之前,获取对它的引用,弹出它时不带动画,然后向它发送一些消息,让它报告保留计数(这将是您编写的一些新方法)。这个新方法还可以记录其他事情,比如它是否有任何定时器、NSURLConnections 等。

关于ios - 调用 navigationController popViewControllerAnimated 时不调用 viewController 的 dealloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12107983/

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