【问题标题】:IOS PDFKIT memory leak on zoomIOS PDFKIT 缩放时内存泄漏
【发布时间】:2019-12-02 12:46:27
【问题描述】:

我有一个使用 PDFKIT 创建的 PDF 视图,它在 iPad 中加载 PDF。当我们缩放 PDF 并进行一些手绘时,它会崩溃。可能是什么问题??

【问题讨论】:

  • 添加异常断点并尝试复制崩溃。如果您找到了,请使用崩溃日志更新您的答案。
  • 我肯定也看到了这个问题。即使我将文件保存到磁盘并重新打开它,使用墨迹注释放大也会由于内存消耗而导致崩溃。根据分配工具,缩放会大大增加与注释相关的 IOSurface 元素的内存大小。这可能是 PDFKit 内部的一个问题,希望 iOS 13 会有所改善,但我还没有调查过。

标签: ios swift ios-pdfkit


【解决方案1】:

我有一个类似的问题,放大具有多个子类型 .ink 的 PDFAnnotations 的文档会导致内存使用量迅速达到峰值并且我的应用程序崩溃。当时,我使用 PDF 页面边界启动了我的每个绘图注释,如下所示:

let inkAnnotation = PDFAnnotation(bounds: page.bounds(for: pdfView.displayBox), forType: .ink, withProperties: nil)

解决我的问题并摆脱性能问题的方法是使用代表页面上绘图的 UIBezierPath 的边界框来启动 PDFAnnotation,而不是使用整个 PDF 页面的边界来启动它。

let inkAnnotation = PDFAnnotation(bounds: bezierPath.bounds, forType: .ink, withProperties: nil)

只需确保贝塞尔路径边界相对于您的 PDF 页面已正确转换。 Artem Poluektov 的This guide 可能是一个很好的起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2016-10-16
    相关资源
    最近更新 更多