切换选项卡时Swift 2 - EXC_BAD_ACCES

时间:2016-05-02 18:33:54

标签: ios swift memory-management

我有一个带有2个标签的快速2应用程序。在两个屏幕上,我在viewDidAppear中执行dataTaskWithUrl,以在屏幕出现时刷新数据。 这导致,如果我在选项卡之间来回快速切换,我迟早会成为EXC_BAD_ACCESS,我想是因为内存问题。我的问题是:

1)在viewDidAppear中执行昂贵的任务(例如http操作)通常是不好的做法吗?

2)如果是,那么当屏幕出现时,使用适当的内存管理刷新数据的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

要分析你的EXC_BAD_ACCESS,检查是否有任何未使用默认值初始化的var,或使用可能导致此崩溃的nil值的数学运算,使用空数组的错误操作...

  • ViewDidLoad :每当视图加载到内存中时,都会调用此方法。例如,在这里添加视图,标签,按钮;没有这些形式,视图永远不会存在。

  • ViewWillAppear :UIViews的创作相当昂贵,你应该尽可能避免在ViewWillAppear上这样做 方法,因为当它被调用时,它意味着iPhone是 已经准备好向用户展示UIView,以及任何沉重的东西 这里会以一种非常明显的方式影响表现(比如 动画被推迟等等。

  • ViewDidAppear :启动新线程到需要很长时间才能执行的事情的最佳位置,例如 一个webservice调用,以获取上面的表单的额外数据。好事 是因为视图已经存在并且正在显示给 用户,你可以展示一个很好的" Waiting"到达时向用户发送消息 数据。