CGContextDrawPDFPage中泄露的iOS 6?(CGContextDrawPDFPag

2019-10-17 13:07发布


我工作的几个应用程序,其基本都是PDF阅读器。 由于iOS 6中,应用程序启动,因为被淘汰的内存崩溃。 我们的应用程序使用PDF阅读器 ,但问题是不相关的。 到目前为止,我们发现:
1.泄漏来自CGContextDrawPDFPage
2.它不存在(或不那么突出)在IOS <6
3.泄漏不会对PDFS没有或小的压缩发生

具体而言:一些压缩打开PDF后,使用一些内存。 当PDF被关闭,那记忆中的一部分被释放。 然而,并不是所有的它。 你可以很容易地得到内存警告,然后只要打开与关闭PDF几次崩溃的应用程序。
我也试着PSPDF ,虽然,它比PDF阅读器的优势(速度),这是更昂贵和相同的泄漏就在那里。

我已经创建了一个非常简单的测试项目中的PDF阅读器和PSPDF套件 。 (你只需要添加一些PDF项目)

有什么我可以做些什么来解决漏水在iOS 6中还是我做错了什么,实际上有没有泄露? 我目前的做法是等待官方补丁。
我知道讨论巨资这里的问题,但我相信我的情况有点不同。 (使用ARC和测试库,在模拟器以及设备上的泄漏可见)

谢谢。

Answer 1:

很多的尝试之后,我发现只有两个解决方案。 他们都不是完美的,但。

1)使用苹果的QuickLook的框架
- 它不在IOS泄漏<6.0
- 这是不是在iOS的6.0泄漏。

QuickLook的另一个进程使用XPC运行。 然而,这也意味着几乎没有任何定制。 (见本有链接的博客文章的问题)

2)使用FastPdfKit库
人们似乎没有CGContextDrawPDFPage参与或者只是一些聪明的优化,但FastPdfKit没有泄漏。 缺点是两个 - 库是商业和它的渲染引擎将不会显示给你,你购买一个许可证后还是一样。 您可以使用免费版本的所有功能,但有一个闪屏。

作为我们一段时间的压力下,无法负担既不等待官方的bug修正,也没有离开我们目前的功能了,我们选择FastPdfKit。


我不认为这是一个明确的答案。 该库适合我们的需要,可能不是你的。 此外,它是一个商业产品。 如果有更简单的解决方案,我会很乐意接受它。



文章来源: CGContextDrawPDFPage leaking in iOS 6?