Ios 如何检测操作系统强制关闭应用程序

Ios 如何检测操作系统强制关闭应用程序,ios,objective-c,memory-management,Ios,Objective C,Memory Management,我正在为>=iOS8设备开发一个iOS应用程序。我的应用程序内存密集,这会成为一个问题,因为该应用程序可能会崩溃。我已经准备好了崩溃日志,在下一次启动时报告应用程序崩溃。然而,在某些情况下,应用程序可能会消耗比平时更多的内存,操作系统可能会终止它。是否有任何委托可用于检测操作系统强制应用程序终止 我尝试了[AppDelegate应用程序将终止:和[AppDelegate应用程序IDReceiveMemoryWarning:,但它们大部分都会给我误报。问题是,这不是一个例外,而是操作系统发出的一个

我正在为>=iOS8设备开发一个iOS应用程序。我的应用程序内存密集,这会成为一个问题,因为该应用程序可能会崩溃。我已经准备好了崩溃日志,在下一次启动时报告应用程序崩溃。然而,在某些情况下,应用程序可能会消耗比平时更多的内存,操作系统可能会终止它。是否有任何委托可用于检测操作系统强制应用程序终止

我尝试了
[AppDelegate应用程序将终止:
[AppDelegate应用程序IDReceiveMemoryWarning:
,但它们大部分都会给我误报。问题是,这不是一个例外,而是操作系统发出的一个系统信号,用于杀死我试图在事件范围内检测到的应用程序

我是一个新的程序员。如果我理解错误或做出不切实际的假设,请告诉我

我已经阅读了以下链接: :

我明白预防问题胜于治疗。但在这里,我试图检测是否会有问题。应用程序并非总是崩溃。可能会有一些边缘情况,或者像iPhone 4s/iPad Air 1这样的非常旧的设备上的用户,应用程序可能会(可能)遇到问题。所以,我需要一个日志机制来解决这个问题

最坏情况下,应用程序的运行时间约为120MB,虽然很高,但远低于过高的范围。虽然应用程序有很多功能,但在保持质量的同时,很难执行应用程序中的图像处理,也很难在内存方面进行分析(峰值取决于大小、图像质量、照明等)。因此,我的应用程序在边界线之内,我想知道当用户使用该应用程序时,如何检测该应用程序是否跨越该边界


我完全同意您提出的优化(或修复崩溃)建议,我会尽最大努力优化(或消除bug)应用程序。

当应用程序崩溃或被系统杀死时,没有任何信号表明您可以有效捕获

是什么让你认为
ApplicationIDReceiveMemoryWarning:
给了你错误的警告


收到内存警告后未被终止不是假阳性。这只意味着你的应用程序没有增加足够的内存分配来超过阈值

当您收到内存警告时,如果需要,请记录日志,但也可以减少内存使用


您如何知道最大运行时分配占用空间是120MB?根据设备的不同,现代设备上的可用内存从125MB(iPad 1)到1GB以上不等(更多信息请参见iPad Pro)。

您应该获得应用程序的IDReceiveMemory警告:在系统内存紧张时调用。可通过选择硬件菜单中的
模拟内存警告
菜单项进行模拟

若你们真的超过了你们设备上的内存限制,你们会被截获(sigkilld)。你无法察觉


如果您想模拟jetsam,只需向您的进程发送SIGKILL(
kill-9

“我的应用程序占用大量内存,这会成为一个问题,因为应用程序可能会崩溃”-什么?应用程序永远不会崩溃——我个人希望你不能对此做出反应,修复代码,不要对崩溃做出反应,修复导致崩溃的代码。你用了多少内存,更重要的是为什么?我无法将我的问题与上面的帖子联系起来。这两个问题都是非常不同的。它将给出一个警告,我正在寻找一种方法来检测一个完全的硬崩溃,我可以记录在某个地方。我的应用程序有可能被警告,但仍然有效。这就是假阳性