2010-11-05 36 views
0

我正在爲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(單個頁面)內容流相關聯。

回答

5

如果您不保留它,則不得釋放pageRef。即使您保留了它,如果文檔本身被釋放,它也可能無法使用。因此,您可能需要將頁面和文檔保留在子視圖控制器中,並相應地釋放它們。

+0

感謝您的回答,我用過您的方法。我所問的問題與這樣一個事實有關,即所有到同一頁面的頁面引用將共享一個內存地址。 – Brandon 2010-11-11 17:01:57

相關問題