0

我决定在我一直在做的项目中使用故事板。当应用程序启动时,它会执行awakeFromNibthen的正确操作viewDidLoad,但是当应用程序完成对另一个视图的转移时,它不会调用viewDidUnload ,而且我认为 dealloc也不会调用。我用过 Apple 的 Instruments 并没有显示任何内存泄漏。

请注意,我正在使用自定义 segues 并通过将NSLogs 插入方法来测试它。有没有其他人遇到过这个?

只想更新:dealloc实际上是调用但不是viewDidUnload.

4

2 回答 2

1

viewDidUnload在实际卸载视图时调用。如果要在未显示视图时清理资源,请将其放入viewDidDisappear.

如果您想查看 viewDidUnload 发生了什么,请在模拟器中运行您的应用程序,然后从菜单栏中选择 Hardware | 模拟内存警告。

在内存压力下,不在屏幕上的视图被删除,也viewDidUnload就是发送方法的时候。

于 2012-08-23T08:44:23.650 回答
1

viewDidUnload方法仅用于didReceiveMemoryWarning(即当视图被删除以恢复一些内存时,但视图控制器不是)。如果您想viewDidUnload在模拟器中运行时查看,请将 ViewController 推送或呈现到辅助视图,然后从模拟器的菜单中生成内存警告。我引用UIViewController 类参考

当内存不足的情况发生并且不需要当前视图控制器的视图时,系统可能会选择从内存中删除这些视图。[viewDidUnload方法] 在视图控制器的视图被释放后调用,这是您执行任何最终清理的机会。如果您的视图控制器存储了对视图或其子视图的单独引用,您应该使用此方法来释放这些引用。您还可以使用此方法删除对您为支持视图而创建但在视图消失后不再需要的任何对象的引用。您不应使用此方法发布用户数据或任何其他无法轻松重新创建的信息。

在调用此方法时,视图属性为 nil。

于 2012-08-23T15:11:10.113 回答