【问题标题】:iOS16.1 Mapkit [VKDefault] Exceeded Metal Buffer threshold of 50000iOS16.1 Mapkit [VKDefault] 超过 Metal Buffer 阈值 50000
【发布时间】:2022-12-11 02:18:54
【问题描述】:

所以对于我们的地图,我们使用 MapKit。我们在地图上方使用 MKPolygons 覆盖一个图层。此功能自 iOS15 以来一直有效,但自 16.1 以来,我们收到以下错误并且应用程序冻结(不崩溃)。

  • [VKDefault] Exceeded Metal Buffer threshold of 50000 with a count of 50892 resources, pruning resources now (Time since last prune:6.497636): Assertion with expression - false : Failed in file - /Library/Caches/com.apple.xbs/Sources/VectorKit/src/MDMapEngine.mm line - 1363

  • Metal API Validation Enabled [PipelineLibrary] Mapping the pipeline data cache failed, errno 22

另一个有趣的日志如下

  • [IconManager] No config pack found for key SPR London Landmarks

知道如何手动清除金属缓存吗?

【问题讨论】:

标签: ios swift mapkit metal ios16


【解决方案1】:

似乎存在与进行绘制调用的 MKOverlayRenderer 数量相关的问题。拥有多个似乎会触发此问题。使用 MKMultiPolyline/Polygon 似乎是一种解决方法,但如果您需要支持 iOS 12 或独立设置线条和多边形的样式,则该方法不起作用。

【讨论】:

  • 对我来说,使用 MKMultiPolyline 渲染器似乎已经解决了这个问题。谢谢!
  • @cjnorris @finn 我的项目已经使用了MKPolylineRendererMKPolygonRendererMKMultiPolygonRenderer,但自 iOS 16 以来,应用程序开始完全冻结。您能否分享示例代码以帮助我了解我可能哪里出错了有这个吗?谢谢
  • @mylogon 我认为现在的解决方案是仅使用 MKMultiPolygonRender 和 MKMultiPolylineRender,即将尽可能多的多边形和多段线批处理在一起。在我的测试中,当仅达到 100 个渲染器时,我遇到了崩溃。
【解决方案2】:

现在这是一个 ios16 问题。使您的地图“平坦”而不是“真实”,您的应用程序将停止冻结或崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2017-08-14
    • 2020-01-09
    • 2018-10-27
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多