我正在为iOS开发一个自定义的PDF库,并注意到有一些显式的函数可以保留和释放CGPDFDocumentRefs andPageRefs。ARC是否处理此类不透明类型的保留/释放?
发布于 2011-12-17 03:42:07
不是的。ARC目前不处理除Obj-C对象以外的任何对象的内存管理( CGPDF对象不是)。
发布于 2011-12-27 19:03:09
当我最近在PSPDFKit 1.8中转换到ARC时,我也遇到了同样的问题。在考虑了很多技巧之后,比如让ARC自动释放一个项目,或者使用关联值,我最终使用了一个容器类来管理CoreFoundation级别的引用。
这很棘手,如果你有一个CGPDFPage,而你释放了这个CGPDFDocument,那么对CGPDFPage的进一步调用将会崩溃,即使这个调用被保留了。所以在引用时要小心。
相关的,这不是一个好主意,以保持许多CGPDFDocumentRefs开放-他们可能需要大量的内存,15MB的malloc是很常见的。因此,在我的库中,我非常小心,当出现内存警告时,会迅速释放内容。
https://stackoverflow.com/questions/8538956
复制相似问题