【发布时间】:2013-02-15 18:31:17
【问题描述】:
在我的一个应用程序中,我进行了大量涉及数组的计算并将它们绘制成图形。计算涉及用户输入,有时,如果用户输入疯狂的值,应用程序将继续执行计算,直到它占用太多内存并被杀死。当用户再次尝试打开应用程序时,它将尝试从上次保存的数据中进行相同的计算并再次崩溃。用户需要删除并重新下载应用程序才能恢复为默认值。
为了解决这个问题,我想在应用程序因内存不足而被终止时转储所有保存的数据。我尝试在我的 appDelegate 中实现 applicationDidReceiveMemoryWarning: 并在进行计算的 viewController 中实现 didReceiveMemoryWarning:。这些函数都没有被调用。在researching a bit之后,我发现是因为我阻塞了主运行循环。
我怎样才能最好地处理这种情况?
【问题讨论】:
-
在后台线程中执行计算?
-
计算后,我需要更新 UI 并进行一些自定义绘图。如果我在后台线程上执行计算,则会调用内存警告,但我的图表并不总是正确显示。
标签: iphone ios objective-c memory-management didreceivememorywarning