【问题标题】:didReceiveMemoryWarning not being called before memory crash在内存崩溃之前没有调用 didReceiveMemoryWarning
【发布时间】:2011-05-04 13:32:07
【问题描述】:

当我的应用程序第一次加载时,我正在加载几个大的 csv 文件,这在模拟器上运行良好,但在我的手机上运行时,它崩溃了大约 30%,并显示消息“程序收到信号“0” ' 这意味着内存崩溃。但是,当我在 didReceiveMemoryWarning 事件中放置断点时,它似乎没有被调用。

我是否遗漏了什么,或者程序会在没有调用事件的情况下正常关闭吗?

【问题讨论】:

  • 可能不是内存问题。终端上的日志是怎么说的?
  • 我认为只有在内存不足时才会发生该事件,而不是在指针错误或使用过时的引用时发生。

标签: iphone memory memory-management memory-leaks didreceivememorywarning


【解决方案1】:

如果您在应用主线程上的同步调用中加载文件,这将阻止它在同步调用完成之前接收其他消息(例如内存警告)。尝试使加载 CSV 文件成为异步任务。 (一个很好的起点是阅读NSOperation。)这将使您的应用在加载过程中收到内存警告。

【讨论】:

    【解决方案2】:

    如果您尝试加载小型 csv,会发生什么情况。如果它工作正常,那么您的 csv 太大并导致内存问题。如果是这样,您可能必须逐块读取 csv 文件,并在读取新文件之前释放旧文件的内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2015-05-02
      相关资源
      最近更新 更多