【发布时间】:2012-10-05 04:39:31
【问题描述】:
我想在 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
Instruments 告诉我泄漏的对象是一个 Malloc 48 字节,由 CoreGraphics 负责。堆栈跟踪中有 CGPDFDocumentCreateWithURL 。泄漏意味着存在没有所有者的对象。
我创建了一个 git repo 并复制了问题: https://github.com/indika/PDFLeaks
任何想法。将不胜感激任何帮助或“指针”。
【问题讨论】:
-
我可能已经找到泄漏背后的原因:如果我的 PDF 来自 NSCachesDirectory 目录,那么就会发生泄漏。也许我应该为可下载的内容使用不同的目录。
-
我可能错了,泄漏取决于 pdf 所在的目录
-
我从您的链接运行了该项目,但它显示没有泄漏...
标签: objective-c ios pdf memory-leaks core-graphics