【问题标题】:How to display iPhone free memory ? and how to free iPhone memory?如何显示 iPhone 的可用内存?以及如何释放 iPhone 内存?
【发布时间】:2010-12-06 13:01:16
【问题描述】:

如何在 UILabel 中显示 iPhone 可用内存?

我想问一下,如何使用 iPhone SDK 释放内存?

仅供参考,我正在使用 iPhone SDK 3.1.2 和 xcode 3.2.1 (Mac OS X Snow Leopard)。

【问题讨论】:

    标签: iphone objective-c iphone-sdk-3.0 memory-management


    【解决方案1】:

    您可以通过在分配完对象后调用“释放”来释放内存。见http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html

    【讨论】:

    • 有没有办法释放整个 iPhone 系统的内存,而不是一个类本身?我注意到一个名为 SBSettings 的应用可以完成这项工作,但我不知道他们是如何实现的。
    【解决方案2】:

    在 SDK 中无法直接访问此信息,并且不允许应用按照您建议的方式与操作系统混为一谈。你在自己的小盒子里;苹果希望你留在那里。当您提出包括“系统”在内的问题时,您可能会跳出自己的框框。

    也就是说,您可以使用一些技巧。您可以分配越来越大的内存块,直到收到-didReceiveMemoryWarning。此时,释放您分配的内存。这将使您大致了解操作系统将允许拥有多少内存。当然,这与操作系统的数量不同。跳闸-didReceiveMemoryWarning 也会导致操作系统自己做一些内务处理,因此这几乎是您必须释放内存的最有效的编程方式。

    释放内存的最有效的非编程方式是要求用户重新启动。对于需要大量内存的应用程序(通常是游戏),这种方法并非闻所未闻。

    SBSettings 需要越狱并且在 SDK 之外。

    【讨论】:

    • 感谢您的回答。我想再问一下,在哪个级别,iPhone会看到内存低?说剩余 10% 的内存?
    • 它没有文档记录并且很难确定,因为操作系统自身对内存的使用总是在波动。您完全有可能收到内存警告,什么也不做,一切都很好,因为操作系统自己释放了内存。由于内存碎片,也有可能使用小块分配更多的内存而不是大块,因此问题可能很复杂。
    【解决方案3】:

    可以使用 mach api 确定 iPhone 上的可用内存量。请参阅此相关问题:Available memory for iPhone OS app

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2011-05-05
      • 2011-12-10
      相关资源
      最近更新 更多