2010-10-26 62 views

回答

8

这一切都取决于你的应用程序,通常你不必做任何特殊的事情,除非遵循Apple推荐的做法。

目前不可见的ViewControllers将获得didReceiveMemoryWarning消息。默认情况下(调用[super didReceiveMemoryWarning])控制器的视图被卸载(释放,释放)。视图正在卸载时,视图控制器会收到viewDidUnload,您应该在其中释放所有IBOutlet(或保留的UI元素)。只有这样才能完全释放视图并释放内存。

在你应该也是免费的尽可能多的数据,你可以在didReceiveMemoryWarning - 如果你存储数据模型的某些部分在ViewController中,其释放,并在viewDidLoad重建时,你的观点被再次加载,将被调用(当用户浏览回到这个控制器)。你也可以通知你的模型类来释放内存。

+0

谢谢!......最后一段是我一直在寻找的线索。 – Omer 2010-10-26 15:13:44

-1

如果您登录或写入任何其他文件,则可能是“磁盘”空间有问题。

此外,你应该检查内存泄漏。

0

didReceiveMemoryWarning中,应释放所有缓存或非必需项目以防止完全耗尽内存。

1

这真的取决于你的应用程序。

如果您的应用程序从Internet上下载并缓存大量内容,例如,您应该在收到警告时尽可能清除。

如果你的应用程序是一个OpenGL游戏,你可能有一个纹理/声音/数据管理器,它引用了一些未使用的数据,然后你想要释放它。 Cocos2D管理这种事情。

如果你的应用程序不是内存密集型的,你就会在某处发生内存泄漏,你应该1)通过Apple阅读内存管理编程指南2)使用仪器/泄漏。

相关问题