ios - 在 iOS 9.2.1/XCode 7.2 中执行 segue 时偶尔出现黑屏

标签 ios iphone segue

投票者:如果您也遇到了这个问题,可以告诉我吗?

当我尝试从特定场景上的按钮以模式方式启动 View Controller 时,我看到的问题大约每 15 次发生一次。

这是在 iOS 9.2.1 和 XCode 7.2 上完成的,但不清楚它发生在哪个版本上。 iOS 版本下调并不容易。

症状如下:

  1. 目标 View Controller 在手机上不可见。相反,顶部栏(带有载体的栏)变黑,有时会闪烁,因此整个屏幕完全变黑。启动 View Controller 可见,但没有响应。
  2. 发生这种情况时,我转到 XCode 屏幕并进行 View 调试。值得注意的是,这显示了目的地屏幕,几乎与预期的一样。唯一的区别是其中一个 View 没有完成它的 drawRect,而其他 View 之一看起来全是 Blob 。但当然,它与手机显示的内容完全不符。
  3. 目标屏幕上的取消按钮似乎仍然有效,因为当我按下它应该在的位置时,应用程序会继续运行。如果我尝试使用按钮重新启动屏幕,它再次不起作用。因此,一旦发生这种情况,该 session 的屏幕就会停止工作,并且需要终止并重新启动该应用。

提示不多,但这些信息可能会有所帮助:

  • 目标屏幕上有 3 个包含 View 的 ScrollView 。所有三个 subview 都有自己的 drawRect。事实证明,发生错误时未调用其中一个 drawRects,导致显示灰色背景。有 Blob 的 View 确实运行了,但我不知道为什么它在 View 调试中看起来像那样。
  • XCode 中没有警告。与 NSLayout 约束或演示文稿重叠无关。
  • 在 prepareForSegue 函数的目标 View Controller 上设置了两个字段。
  • segue 通过 Storyboard从时间按钮启动。没有丢失或额外的导出,并且它被正确命名以供准备功能捕获它。

这个问题是偶发的,但如果您连续多次启动/取消,就会可靠地发生。

这是屏幕截图。我不会给你看黑屏。它只是带有载体和时间的黑色。

The launching screen

What XCode view debugger shows during black screen

最佳答案

我已经解决了。结果证明,检查内存使用情况非常有用。

灰色区域应该由画有线条的大背景填充。事实证明,drawBackground 的简单实现导致内存大小膨胀到超过 200MB。我用 CSTiledLayer 替换了它,现在它占用了几 MB。

关于ios - 在 iOS 9.2.1/XCode 7.2 中执行 segue 时偶尔出现黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35087482/

相关文章:

ios - Swift (iOS) 代码覆盖率和 XCTest(模拟)

iOS swift : saving an array of custom classes

ios - 在 UICollectionView 中选择单元格时将值传递给另一个 ViewController

iphone - iPhone应用程序在屏幕上时是否可以弹出本地通知?

ios - prepareForSegue 函数不起作用

iphone - 如何从推送 segue 中解雇带有 Storyboard的 viewController?

android - Twilio 调用在 iOS 和 Android 中不起作用

ios - 在 iOS 应用程序中,如何检测用户按下了其外部键盘上的箭头键之一?

iphone - iPod touch调试: Error on install/run only if app exists on device already?

ios - 使用默认摄像头启用视频模式