我正在开发适用于iOS的自定义PDF库,并注意到有保留和发布CGPDFDocumentRefs
andPageRefs
的明确功能。 ARC是否处理这种不透明类型的保留/释放?
答案 0 :(得分:3)
没有。 ARC当前没有处理除Obj-C对象(CGPDF之外没有)的任何内容的内存管理。
答案 1 :(得分:3)
我最近在PSPDFKit 1.8中转换为ARC时遇到了同样的问题。在考虑了许多技巧之后,比如将ARC用于自动释放项目或使用相关值,我最终使用了一个容器类来管理CoreFoundation-Level上的引用。
这很棘手,好像你有一个CGPDFPage并且你发布了CGPDFDocument,进一步调用CGPDFPage会崩溃,即使这个被保留了。所以要小心参考。
相关,保持许多CGPDFDocumentRefs打开并不是一个好主意 - 它们可能需要大量内存,15MB的malloc并不罕见。因此,在我的库中,我非常注意在发生内存警告时,事情会快速释放。