1

在开发我当前的应用程序时,我遇到了一些问题,最终追溯到内存不足警告。部分低内存来自我(自由)使用 UIWebViews,这显然消耗了大量内存。

我不认为这会是一个问题,因为当抛出低内存警告时,当前不可见的视图应该会消失,不幸的是,连接到 UITabBarController 的任何东西都保留在层次结构中并且不会释放. 通过手动释放(然后在 viewWillAppear 中重新创建)视图,我可以让事情正常进行。但这并不能完全解决内存警告问题。

所以我需要做的是手动释放视图——以及最终连接到它的大量内存——然后恢复它。由于我不想以编程方式构建它(这就是 IB 的用途!),我需要以某种方式从情节提要中重新加载它。

或者,或者,我是个白痴,有一些非常明显的东西可以让我的生活变得轻松。

4

1 回答 1

1

经过更多的实验,事实证明,一方面,我对视图生命周期的理解略有缺陷,另一方面我的实验因不小心让僵尸对象打开而受到污染。

事实上,视图会在内存不足的情况下卸载它们的内容并在以后重新加载它们——这就是“viewDidLoad”和“viewDidUnload”的设计目的的一部分!正如我阅读的一些教程所做的那样,将初始化代码放入其中是一个重大错误。该初始化代码应该放在指定的初始化程序中——即使找出指定的初始化程序可能很烦人。

于 2012-09-23T01:29:06.867 回答