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
。即使您保留了它,如果文档本身被释放,它也可能无法使用。因此,您可能需要将页面和文档保留在子视图控制器中,并相应地释放它们。
感谢您的回答,我用过您的方法。我所问的问题与这样一个事实有关,即所有到同一页面的页面引用将共享一个内存地址。 – Brandon 2010-11-11 17:01:57