2

我一直在我的应用程序中收到内存警告,这引起了我的注意。我有一个导航控制器及其根视图控制器。从这个根视图控制器,我通过调用将另一个视图控制器推送到导航堆栈上:

[self performSegueWithIdentifier:sender:]

segue 是从根视图控制器到新视图控制器和模式 PUSH。

然后我删除这个视图控制器并通过调用弹回根视图控制器

[self.navigationController popViewControllerAnimated:YES];

问题是,如果我推动并弹出视图控制器大约 20 次,我就会开始收到内存警告。

didRecieveMemoryWarning 在视图控制器上在单个帧中被调用了大约 20 次,这表示每个弹出的视图控制器仍在挂起。

然后该应用程序最终崩溃。

我在任何地方都没有存储对推送视图控制器的引用。

我正在使用 ios6,所以我知道 viewDidUnload() 不会被调用。

当我收到内存警告时,我将删除所有缓存的图像,但理想情况下销毁旧的弹出视图控制器是前进的方向,但我不知道如何使用情节提要来做到这一点。

如果我从代码中手动调用 pushViewController,我可以维护一个对象引用以便每次重复使用,这样我就不会继续创建新的视图控制器来推送,但这与故事板相距甚远。

非常感谢您对此事的任何帮助。

谢谢,斯图尔特。

4

0 回答 0