-1

我在 Swift 中有一个简单的应用程序,只有几个视图:

  • 一个 UIWebView
  • 一些表视图
  • 以及我从服务器下载的一些数据的另一个视图

这一切都很好,直到当我使用应用程序时,我按下主页按钮,离开那里一段时间,然后 iPad 进入睡眠模式。几天后,我点击应用程序图标,它不会启动:

  • 第一次点击图标将选择图标(变暗)并在几秒钟后取消选择
  • 第二次点击将启动 LaunchScreen 并在几秒钟后崩溃
  • 双击主页按钮并退出应用程序有时会起作用

我只是想知道是否需要在我的代码上设置一些东西来处理类似viewWillDisappear或其他方法的空闲/长时间不活动?

如果是这样,我的所有控制器中都已经有了这个:

override func viewWillDisappear(animated: Bool) {
    timer.invalidate()
    webView.removeFromSuperview()
}

也许我也需要super.在那里打电话?还是我缺少的其他东西?

4

2 回答 2

1

您可能有一些空指针异常和崩溃。也许您正在调用一些未设置的变量(如果不为空则检查)。尝试禁用应用程序功能(例如从服务器下载、存储和使用数据),然后查看应用程序从哪里开始正常工作,然后从那里继续。

很抱歉答案含糊,但没有代码,也许还有一些日志,很难给出具体的答案。

不,您不必做任何特别的事情来处理空闲/长时间不活动。

于 2015-12-21T11:15:13.253 回答
1

您绝对应该在 viewWillDisappear(animated:) 方法中调用 super。请参阅UIViewController 类参考文档。此外,您可能想确认为什么要​​从视图控制器的层次结构中删除 webView。

讨论

调用此方法以响应从视图层次结构中删除的视图。在实际移除视图和配置任何动画之前调用此方法。

子类可以覆盖此方法并使用它来提交编辑更改、退出视图的第一响应者状态或执行其他相关任务。例如,您可以使用此方法恢复对第一次呈现视图时在 viewDidDisappear: 方法中对状态栏的方向或样式所做的更改。如果你重写这个方法,你必须在你的实现中调用 super

于 2015-12-21T11:58:07.833 回答