【发布时间】:2009-02-23 13:33:04
【问题描述】:
我正在使用 UINavigationController 在视图之间移动。当我在视图中来回移动时,我的应用程序使用的内存不断增加。在将 NSLog 语句放在所有视图控制器的 dealloc 方法中时,我注意到它只被一些视图控制器调用,而不是所有被弹出的视图控制器。
例如,这是推送视图的顺序 MainViewController -> viewcontroller1 -> viewcontroller2 -> viewcontroller3
现在在 viewcontroller3 中,如果我执行 popToViewController:mainController,则仅为 viewcontroller3 调用 dealloc。 viewcontroller1 和 2 不调用它。
谁能告诉我为什么会这样。
发现问题。如果视图控制器持有的任何引用仍在内存中,则不会调用 dealloc 方法。在我的情况下,它是未在 viewcontroller1 和 viewcontroller2 中释放的 MPMoviePlayerController 对象。
【问题讨论】:
-
我遇到了完全相同的问题;仅对第三个控制器调用 dealloc。您说“如果视图控制器持有的任何引用仍在内存中,则不会调用 dealloc 方法。”你能详细说明一下吗?
-
视图控制器是仍在使用的对象的委托。我将其从代表中删除,然后它运行良好。因为另一个对象持有它的引用(作为委托),所以没有被释放
标签: iphone