在内存崩溃之前没有调用didReceiveMemoryWarning

时间:2011-05-04 13:32:07

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

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

我是否遗漏了任何内容,或者程序通常会在没有调用事件的情况下关闭?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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