簡體   English   中英

CGPDFDocumentCreateWithURL ARC內存泄漏

[英]CGPDFDocumentCreateWithURL ARC Memory Leak

我想在iOS上渲染PDF,調用CGPDFDocumentCreateWithURL()時出現內存泄漏。 我知道這個問題之前已經討論過,但是我不知道我的情況是否有所不同,因為我使用的是ARC。

我通過在viewDidLoad上運行以下代碼來提取並簡化問題:

// Bridge resourceRef to ARC with no ownership change (still owned by ARC)
CFURLRef resourceRef = (__bridge CFURLRef) [NSURL fileURLWithPath:htmlPath];

CGPDFDocumentRef pdf;
pdf = CGPDFDocumentCreateWithURL(resourceRef);
CGPDFDocumentRelease(pdf);

// Do not need to release resourceRef because ARC will release it

儀器告訴我,泄漏對象是一個48字節的Malloc,由CoreGraphics負責。 並且stacktrace中包含CGPDFDocumentCreateWithURL。 泄漏意味着沒有所有者就在那里存在對象。

我用問題的復制創建了一個git repo: https : //github.com/indika/PDFLeaks

有任何想法嗎。 將不勝感激任何幫助或“指針”。

resourceRef將被過度釋放。 看一下你在做什么。

1)橋接resourceRef引用到ARC,而沒有所有權更改(仍由ARC擁有)

2) CFRelease on resourceRef

3)ARC還發布resourceRef

您不需要步驟2

但是,這不是內存泄漏,而是過度釋放。

我犯了很多錯誤,尤其是兩次發布文檔參考時。 但是,在我的情況下,這並不是真正的問題。

我正在加載損壞的PDF! 我正在使用pdftk切片和合並pdf文檔,但我破壞了索引。 因此,請記住,將PDF與pdftk合並后,請使用以下方法修復文件:

pdftk original output destination

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM