[英]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.