IOS 如何管理后台应用程序的内存?

How does IOS manage memory of backgrounded apps?

我有一个 IOS 应用程序,它在测试期间似乎运行良好,直到...

该应用程序已经在后台运行了很长一段时间,比如 24 小时...同时,其他应用程序(视频、音频、位置...电池电量不足)发生了很多 activity ...正在使用大量内存)。

然后当我将我的应用程序带回前台时,它会出现故障,例如没有音频......然后在片刻之后崩溃。

我知道这不是最好的描述,但它只发生过一次,我不要求任何人告诉我到底是什么问题。

我真正想知道的是:

IOS 是否会对后台应用程序执行任何操作,例如从内存中删除它们可能需要的对象?我认为如果它确实这样做了,那么它会在下次恢复时重新启动应用程序,而不是尝试恢复不可恢复的应用程序。

谢谢!

如果 运行 内存不足,系统可能认为有必要释放一些内存,并希望您通过实施 UIApplicationDelegate 方法 applicationDidReceiveMemoryWarning and UIViewController method didReceiveMemoryWarning 来处理这种情况。

这些方法的文档没有提到当这些方法被调用时系统在幕后做了什么(只是你应该释放尽可能多的内存,否则你的应用程序可能会被终止),但是 this blog post 声称系统可能会破坏内部对象,例如图形上下文或内部存储。