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 は、リークされたオブジェクトは、CoreGraphics が担当する Malloc 48 バイトであることを教えてくれました。また、スタックトレースには CGPDFDocumentCreateWithURL が含まれています。リークとは、所有者のいないオブジェクトがそこにあることを意味します。
問題を再現した git リポジトリを作成しました: https://github.com/indika/PDFLeaks
何か案は。助けや「ポインタ」をいただければ幸いです。