状态栏无法找到缓存的时间字符串图像。正在进行内部渲染。

113

我在升级到Swift4.1和Xcode 9.3之后,在控制台窗口中看到了上述运行时消息。在升级之前,我没有看到过这条消息。

状态栏无法找到缓存的时间字符串图像。正在进程中呈现。

只要我的应用程序在运行,每隔几分钟就会出现一次。

在我看来,似乎没有负面影响,我的应用程序正常运行,我还没有遇到任何问题。

我使用标准状态栏,没有以任何方式进行修改。

问题1:在我尚未遇到的情况下,此警告是否会带来问题?

问题2:有人知道如何消除这个警告吗?


1
奇怪。我在将测试设备升级到iOS 11.3和Xcode 9.3后也遇到了这个问题。 - Sudara
1
它在每分钟发生一次(至少对我来说是这样),就在时间滚动到新的一分钟之后。 - Simon Jenkins
1
对我来说也一样 ;) 使用Xcode 9.3和Swift 4.1 - Niko Klausnitzer
1
我正在设备上运行我的应用程序(iPhone 6,容量16 GB,可用5.48 GB),我也看到了这个警告,但当我在Xcode控制台日志中收到此消息时,我的应用程序卡住了。 - Ravi Raja Jangid
消息本身没有任何暗示它标记了错误或警告条件。更多的是为了帮助开发而加入的东西,即使不再需要也会保留。 - JulianSymes
显示剩余4条评论
6个回答

94

这个bug/调试笔记在捆绑了Xcode 9.3及以上版本的iOS SDK中存在

更新: Xcode 9.4.1 (9F2000)未修复
更新: Xcode 10 (10A255)未修复
更新: Xcode 11 beta未修复

我认为您可以安全地忽略它。新版本的iOS/macOS有时包含信息性调试消息,一般会在下一个版本发布时被删除。


5
我会等待稳定版发布——至少我们终于解决了这个问题。感谢提醒。 - mac_eric
9
此漏洞在9.4(9F1027a)版本中仍未修复。 - Adam
3
9.4.1版本(9F2000)中未修复。 - user5306470
版本10.0 beta 4,未固定。 - mkai
1
我很久以前已经点赞了,但现在正在重新考虑。 - Anton Tropashko
显示剩余4条评论

13

我也遇到了同样的问题。为了解决这个问题,我执行了以下操作:

前往目标 -> 部署信息 -> 取消选中“隐藏状态栏”

这个方法解决了我的问题。对我来说,这是“部署信息”设置。

图像描述


3
我测试了勾选和不勾选“隐藏状态栏”选项,但无论选择哪个选项,都不能阻止消息“状态栏找不到缓存.....”每隔一分钟弹出一次。 - mac_eric
请问您能分享一下,您使用的是哪个Xcode版本和设备?另外,您的应用程序是否支持横屏模式? - sRoy
我正在使用Xcode 9.3(9E145),在使用iPad Air 2和iPhone 8时遇到了这个问题。是的,该应用程序支持横向和纵向方向。 - mac_eric
当我在plist中将“View controller-based status bar appearance”设置为True时,警告消失了。 - user7219266
4
谢谢!对我有用,实际上一开始没被选中,我勾选了它并运行了一次,然后又取消勾选它它就起作用了。 - Saeed Ir
显示剩余7条评论

1

我也看到了这个警告,而且回答问题1时,我还注意到它可能会导致非常恶劣的行为。

运行类似于基本示例的动画三角形Metal应用程序,但是附近有一些变化。

renderPassDescriptor.colorAttachments[0].loadAction = .load

这样可以避免每一帧都清除框架。似乎发生的情况是,每隔一段时间记录警告消息时,iOS也会混淆其图形状态管理的某些部分,导致我看到图像的某些部分猛烈闪烁(稍后又消失了)。

在“真实”的应用程序中出现这种情况的可能性有多大我不确定,但这绝对不是你想让用户最终看到的东西。

到目前为止,我还没有解决这个问题;“隐藏状态栏”和“需要全屏”设置都没有帮助。


当然你无法修复它。你有自己的心态。苹果有它的GLES状态用于渲染状态栏,这两者显然会发生冲突。向他们提交一个错误报告,并提供一个示例应用程序来帮助他们在实际案例中解决问题。这可能不会出现在像我这样的普通uikit用户中。 - Anton Tropashko

1
在我的情况下,它是通过 self.navigationController?.isNavigationBarHidden = false 隐藏导航栏。
当你隐藏导航栏时,状态栏也会被隐藏!只需使用 self.navigationController?.navigationBar.isHidden = true 代替即可。然后你就可以恢复状态栏了。

第一行为什么有= false,而第二行为= true?你是想让读者困惑,还是有特别的目的?(如果没有特别目的,请更正并在两行上写上truefalse。) - meaning-matters

0
根据PeterT回答问题1的答案来回答问题2: 不仅你不能摆脱这个警告,而且你不应该这样做,因为这意味着潜在的问题绝非善意。至少在某些情况下是如此。
这也意味着DEC Field Circus Engineer跳舞 交换元信息中的平坦轮子对于项目来说是正确的, 这将使你看起来像小丑。

-1

我通过在目标->部署信息中勾选“需要全屏”来消除这个警告。

注意,勾选此选项可能会在iPad上产生一些副作用,因此您应该谨慎操作。


1
我正在使用“需要全屏”但是仍然出现该消息。 - mac_eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接