如何解决应用程序在CGContext.drawPDFPage上使用EXC_BAD_ACCESS崩溃
我的应用程序在 CGContext.drawpdfpage 上随机崩溃,而无法始终如一地重现该错误。它主要发生在iPad上。代码看起来像这样:
override func draw(_ layer: CALayer,in ctx: CGContext) {
UIGraphicsPushContext(ctx)
ctx.saveGState()
defer {
ctx.restoreGState()
UIGraphicsPopContext()
}
ctx.setFillColor(UIColor.white.cgColor)
ctx.fill(viewBounds)
ctx.translateBy(x: 0,y: viewBounds.height)
ctx.scaleBy(x: 1,y: -1)
ctx.scaleBy(x: pdfScale,y: pdfScale)
ctx.interpolationQuality = .high
ctx.setRenderingIntent(.defaultIntent)
ctx.beginpdfpage(nil)
ctx.drawpdfpage(pdfpage) // This is where the crash happens
ctx.endpdfpage()
}
堆栈跟踪以CGPDFObjectGetReference
结尾,如下所示:
错误是:EXC_BAD_ACCESS
。如果您发现任何可能导致此崩溃的信息,将对我有很大帮助!
解决方法
iOS 12
遇到类似崩溃的任何人,都属于缓存层,在特定情况下按索引请求CGPDFDocument
和CGPDFPage
。
解决方案是按需从持久性存储中请求PDF。
iOS 13
从iOS 13开始-我们没有看到与此相关的任何错误,因此Apple可能通过从CGPDFDocument
和CGPDFPage
类型的值还原上下文来解决了该错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。