2011-02-25 64 views
0

我写了一些代码来显示pdf文件的页面。不幸的是,下面的代码似乎在泄漏,但我找不到泄漏。谁可以帮助我改进此代码?提前致谢。PDF查看器的泄漏代码

CGPDFPageRef page = CGPDFDocumentGetPage(pdf, pageNr); 
    CGPDFPageRetain(page); 

    CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox); 

    float pdfScale = self.view.frame.size.width/pageRect.size.width; 
    pageRect.size = CGSizeMake(pageRect.size.width*pdfScale, pageRect.size.height*pdfScale); 

    UIGraphicsBeginImageContext(self.view.bounds.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0); 
    CGContextFillRect(context,pageRect); 
    CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page,kCGPDFMediaBox,self.view.bounds, 0, true); 
    CGContextSaveGState (context); 
    CGContextTranslateCTM(context, 0.0, self.view.bounds.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGContextConcatCTM (context, pdfTransform); 
    CGContextClipToRect (context, CGPDFPageGetBoxRect(page,kCGPDFMediaBox)); 
    CGContextDrawPDFPage(context,page); 

    CGContextRestoreGState(context); 
    UIImage *backgroundImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    CGPDFPageRelease(page); 
+1

你知道你可以使用'UIWebView'来显示PDF,对吗? – 2011-02-25 10:48:16

+0

为什么使用CGPDFPageRetain(page); ...然后你使用CGPDFPageRelease(page); ?这些代码的所有代码都是用相同的方法发布的吗?如果是这样,你不需要保留/释放它......然后..你确定泄漏不在“pdf”和“pageNr”的分配?你省略了他们分配的代码... – meronix 2011-02-25 11:34:57

回答

0

如果发生泄漏,同样是我的CGContextDrawPDFPage应用,那么它是一个已知的问题,据说这是在IOS4.0予以纠正,但实际上并非如此。检查这Radar

更新:我已经检查过,实际上它现在只在我的iPhone 3上有iOs 4.1,而不是在iPhone 4(iOs 4.2)和iPad(iOs 4.2)上泄漏。