应用程序在标签栏之间快速导航之间崩溃

时间:2014-05-30 09:19:08

标签: ios objective-c ios5 uitabbarcontroller

我正在构建使用标签栏的应用程序。

我说A& B标签。

  • 当我点击标签A时,从服务器加载数据需要时间。
  • 同样,当我点击标签B时,需要加载时间。
  • 如果单击选项卡A并等待它加载所有数据,然后移至选项卡B,它可以正常工作。
  • 如果我在A仍然从服务器加载数据时单击选项卡A并移至选项卡B,则会导致应用程序崩溃。

我试图在视图卸载视图时执行卸载方法。但是,它没有用。

有谁能建议我如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

在标签栏控制器加载的每个视图中,我添加了self.view = nil;对于每个视图都会消失方法。这解决了问题。可能会有所帮助。

答案 1 :(得分:1)

如果没有看到您的代码,就很难回答。可能有很多可能的原因。但是,我的第一个猜测是您将NSURLConnection完成处理程序分派到主队列并尝试更新不再同步的UI。

换句话说,从标签A开始,下载以异步方式开始。然后切换到UI中的选项卡B,在另一个队列上开始第二次下载。您的选项卡下载完成,然后将完成处理程序分派到主队列。在该完成处理程序中,您可能有代码,例如,在选项卡A上重新加载UITableView。但由于您不再在选项卡A上,该视图控制器(及其所有相关视图)当前不存在于您的程序中&# 39;生命周期。如果您没有正确检查零响应等,则可能会导致崩溃。

另一个不太可能的可能性是你的内存不足。易于测试:只需在浏览应用程序时监控内存使用情况。如果应用程序没有正确响应内存警告,您的应用可能会崩溃。如果您使用的是NSURLCache,并且同时为两个下载请求提交了太多内存,那么这是可能的。