CGPDF iPhone / iPad内存问题

时间:2010-10-12 14:59:15

标签: iphone ipad pdf

我一直在努力为iPhone / iPad制作一个可用的PDF阅读器,但事情并没有停止吃内存。似乎用CGContextDrawPDFPage绘制的所有页面都在内部缓存而从未发布。

我不是唯一遇到此问题的人:http://lists.apple.com/archives/quartz-dev/2010/Apr/msg00025.html

http://web.archiveorange.com/archive/v/SEb6acvPicMB2NdIjEd3

第一个帖子的一个回复:

  

如果这是我认为的,那不是泄漏,而是缓存。不要在调用之间保留PDF文档,而是尝试创建文档,获取和绘制页面,然后在完成后释放文档。

我已经尝试过了,它解决了这个问题,但它太慢了。虽然以“正常”方式进行(即没有为每次抽奖加载/释放CGPDFDocument),但是在我到达文档的第4页或第5页并且崩溃之前,工作良好且合理地快。

我已经搜索了这个问题多年了:每个人都有同样的问题,但显然没有人得到它的工作。我发现的唯一样本加载了一页PDF,所以很明显一切正常,直到你加载一个包含多个页面的文档(当然如果它有图像,它甚至更早崩溃)。这真让我抓狂。

所以问题是:你在应用程序中如何使用CGPDF处理PDF绘图?任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:5)

我目前的企业项目基于PDF阅读器。我不发布CGPDFDocument,我可以翻阅14页apple pdf,应用程序最大值为30mb。我不能给你代码,但我可以指出你正确的方向。

我在这里开始了一个类似的主题:Fast and Lean PDF Viewer for iPhone / iPad / iOs - tips and hints?

一些提示:

- 尽可能将任何媒体保存到磁盘。

- 如果在TiledLayers上渲染

,则使用更大的tileSizes

- 注意图像渲染速度比CGPDFPageRef

- 使用NSOperations提前准备页面    时间。

- 回收页面对象

- 只要您不需要,就关闭任何打开的上下文

- 收到内存警告释放并重新加载DocRef

相关问题