iphone CGPDFDocumentRef巨大的内存泄漏

时间:2010-08-23 19:41:25

标签: ios cgpdfdocument

我一直在做研究,因为我的pdf查看器应用程序一直在第4/5页崩溃,因为每次翻页都会发生内存泄漏。

事实证明,苹果有一个错误。

见这里:https://devforums.apple.com/message/9077#9077

根据我的理解,你必须发布&每次更改页面时都保留pdf文档。

我无法让它工作(此代码位于UIView的子类中):

- (void) drawInContext: (CGContextRef) ctx {
CGPDFDocumentRelease(__pdfDoc);
CGContextSetRGBFillColor( ctx, 1.0, 1.0, 1.0, 1.0 );
CGContextFillRect( ctx, CGContextGetClipBoundingBox( ctx ));
CGContextTranslateCTM( ctx, 0.0, self.bounds.size.height );
CGContextScaleCTM( ctx, 1.0, -1.0 );
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, self.bounds, 0, true));
CGContextDrawPDFPage( ctx, pdfPage );NSLog(@"DONE!");
CGPDFDocumentRetain(__pdfDoc);}
@end

我的pdf在viewController中打开:

- (CGPDFPageRef) pdfPage: (NSInteger) index {
if( ! __pdfDoc ) {
__pdfDoc = CGPDFDocumentCreateWithURL((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mybook" ofType:@"pdf"]]);}
if( __pdfDoc ) {
size_t pdfPageCount = CGPDFDocumentGetNumberOfPages( __pdfDoc );
index++;
if( index < 1 )
index = 1;
if( index > pdfPageCount )
index = pdfPageCount;
CGPDFPageRef page = CGPDFDocumentGetPage( __pdfDoc, index );
return page;}
return nil;}

我在谷歌上找不到任何东西,而且我整天都在阅读文档。

1 个答案:

答案 0 :(得分:0)

呀。错误。在绘制页面时,您必须打开/关闭整个文档。吸。

(我认为这已在3.2.x中修复)