pdf查看器的泄漏代码

时间:2011-02-25 10:45:09

标签: iphone objective-c cocoa-touch 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 个答案:

答案 0 :(得分:0)

如果你泄漏的是我在CGContextDrawPDFPage中的应用程序,那么这是一个已知的问题,据说在iOs4.0中已得到纠正,但实际上并非如此。请检查此Radar

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