【问题标题】:iPhone Memory warning level=2iPhone 内存警告级别=2
【发布时间】:2011-03-23 21:34:21
【问题描述】:

我有一个应用程序可以将大量视图堆叠在一起。

在某些时候,我收到了内存警告级别 2(这是意料之中的)。

问题是,当我运行 Instruments 时,我没有任何内存泄漏,并且应用程序占用了大约 9-10MB 的空间……我想说,这并不是那么多 ?

问题是:一个应用程序可以消耗多少内存,也就是 iPhone 有多少 RAM?

我知道我可以响应 receivedMemoryWarning 并释放一些内存 - 但这意味着我必须摆脱一些视图,这不是我正在寻找的解决方案...

到目前为止,该应用没有崩溃 - 但我担心它可能会在其他用户的 iPhone 上崩溃...

【问题讨论】:

    标签: iphone memory memory-management


    【解决方案1】:

    应用程序可以使用 30-40 MB 或更大的实际内存,这不会有问题。当您收到 1 级内存警告时,到那时为止没有问题,但如果您收到 2 级内存警告,那么应用程序可能会或将在一段时间后崩溃。

    解决方案是,当您收到内存警告级别 2 时,在您的委托方法中,释放一些您当前未使用的内存。

    【讨论】:

      【解决方案2】:

      您的应用不会让任何人的 iPhone 崩溃。系统只会杀死您的应用程序。无论如何,传闻 3GS 有 256Mb,而 iPhone 4 有 512Mb。这仍然无关紧要,因为当您收到警告时,您最好遵守。 尝试减少您拥有的视图数量或卸载用户看不到的视图。

      【讨论】:

      • 感谢您的澄清!我不能以某种方式“隐藏”其他视图吗?它们有时具有某些需要维持的状态。如果我卸载视图,它也会失去它的状态......
      • 尝试使用isHidden 属性,看看是否有帮助。
      • 这就是为什么将数据对象与显示对象分开总是更好的原因。尝试以将数据与视图分离的方式规划应用程序,以便您可以将它们丢弃并在以后需要时再次创建它们。您还可以查看 NSCoding 来保存对象的状态。
      • Trout:他没有说他害怕手机崩溃,他说他害怕应用程序崩溃。 @Urs:您可以在此页面上查看 iPhone 的粗略规格,包括 RAM 容量:theiphonewiki.com/wiki/index.php?title=IPhone。可用 RAM 的数量取决于多种因素,包括手机是否支持多任务处理,以及是否有后台任务/暂停的应用程序。在典型的 iPhone 3G 上,应用程序的可用 RAM 通常不超过 15 MB,而且很可能会更少,其余部分由 Apple 应用程序占用。
      猜你喜欢
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 2011-09-12
      • 1970-01-01
      相关资源
      最近更新 更多