CGPDFDocumentRelease()崩溃的应用程序,错误地说已被释放

问题描述:

我正在为iOS写一个PDF查看器。我获取到PDF的参考,当我初始化我的ViewController一样,CGPDFDocumentRelease()崩溃的应用程序,错误地说已被释放

pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL); 

然后,我用它遍及类获得CGPDFPageRef的喜欢的生活,

CGPDFPageRef pageRef = CGPDFDocumentGetPage(pdf, docPage); 

子视图控制器使用这些页面并在释放时释放它们。然而,当我试图释放PDF本身(与CGPDFDocumentRelease),我收到以下错误:

[Not A Type release]: message sent to deallocated instance 

有什么是吗?这不会是一个问题,但是我的heapshot分析包含了CG对象和大量的分配,这些分配似乎都与pdf(单个页面)内容流相关联。

如果您不保留它,则不得释放pageRef。即使您保留了它,如果文档本身被释放,它也可能无法使用。因此,您可能需要将页面和文档保留在子视图控制器中,并相应地释放它们。

+0

感谢您的回答,我用过您的方法。我所问的问题与这样一个事实有关,即所有到同一页面的页面引用将共享一个内存地址。 – Brandon 2010-11-11 17:01:57