gpt4 book ai didi

iPhone - 何时调用 View Controller 的 dealloc?

转载 作者:行者123 更新时间:2023-12-03 18:17:52 26 4
gpt4 key购买 nike

我正在使用 UINavigationController 在 View 之间移动。当我在 View 中来回移动时,我的应用程序使用的内存不断增加。在将 NSLog 语句放置在所有 View Controller 的 dealloc 方法中时,我注意到它仅被某些 View Controller 调用,而不是所有弹出的 View Controller 。

例如,这是 View 推送的顺序 MainViewController -> viewcontroller1 -> viewcontroller2 -> viewcontroller3

现在在 viewcontroller3 中,如果我执行 popToViewController:mainController,则仅为 viewcontroller3 调用 dealloc。 viewcontroller1 和 2 不会调用它。

有人可以告诉我为什么会发生这种情况吗?

发现问题了。如果 View Controller 持有的任何引用仍在内存中,则不会调用 dealloc 方法。就我而言,它是 MPMoviePlayerController 对象,未在 viewcontroller1 和 viewcontroller2 中释放。

最佳答案

这是一个先开后关的情况。因此,如果您想象您的第一个 View Controller 是汉堡的底部小圆面包,那么您将添加汉堡(第二个 View Controller ),然后添加顶部汉堡(第三个 View Controller )。

如果你回到汉堡,你会取下顶部的面包(popViewController:调用弹出 View 的 dealloc 方法)。如果你想回到底部的面包,那么你必须弹出汉堡(每次弹出 View 时都会调用dealloc)。

不知道为什么在 pop to root 时第二个 View Controller 的 dealloc 不会被调用..

关于iPhone - 何时调用 View Controller 的 dealloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/577635/

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