iphone - pdf对象造成内存泄漏

标签 iphone memory-leaks

我有以下代码

NSString *filePath=[[NSString alloc] initWithString:[[NSBundle mainBundle] pathForResource:pdfname ofType:@"pdf" inDirectory:@"appMasterPdf"]]; 
NSURL *url = [NSURL fileURLWithPath:filePath];
[filePath release];

CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)url);
CGFloat scaleRatio; 
UIGraphicsBeginImageContext(CGSizeMake(width, height));
CGContextRef context = UIGraphicsGetCurrentContext();
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, pageNumber);
pageRect = CGPDFPageGetBoxRect(page, kCGPDFBleedBox);
width=pageRect.size.width;
height=pageRect.size.height;
if(pageRect.size.width/pageRect.size.height < 1.0) {
    scaleRatio = height/pageRect.size.height;
}
else {
    scaleRatio = width/pageRect.size.width;
}

CGFloat xOffset = 0.0;
CGFloat yOffset = height;
if(pageRect.size.width*scaleRatio<width) {
    xOffset = (width/2)-(pageRect.size.width*scaleRatio/2);
}
else {
    yOffset = height-((height/2)-(pageRect.size.height*scaleRatio/2));
}

CGContextTranslateCTM(context, xOffset, yOffset);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSaveGState(context);
CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page,
                                                              kCGPDFBleedBox, CGRectMake(0, 0, pageRect.size.width, pageRect.size.height),
                                                              0, true);
pdfTransform = CGAffineTransformScale(pdfTransform, scaleRatio, scaleRatio);
CGContextConcatCTM(context, pdfTransform);
CGContextDrawPDFPage(context, page);
UIImage *tempImage = UIGraphicsGetImageFromCurrentImageContext();
CGContextRestoreGState(context);
UIGraphicsEndPDFContext();
UIGraphicsEndImageContext();

CGContextRelease(context);
CGPDFPageRelease(page);
return tempImage;

该函数在 for 循环中调用

CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)url); 这些行给我带来了内存泄漏。 请帮我 。感谢高级

最佳答案

根据 CGPDFDocumentCreateWithURL 的手册,“您负责使用 CGPDFDocumentRelease 释放对象。”

所以你需要打电话

CGPDFDocumentRelease(pdf)
当你完成时。 CG 方法的一般约定是,如果名称中包含 Create,则必须调用相应的 Release 方法。

关于iphone - pdf对象造成内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184443/

相关文章:

Activity 之间的Android内存泄漏

iphone - Apple Reachability 示例在后台模式下不起作用

iphone - 嵌套的NavigationController导致uiview调整大小

javascript - 如何预防和防范闭包内存泄漏

c++ - Qt5 中的内存泄漏?如何删除 QMimeData?

java - 使用 setText 时内存泄漏

c++ - Webassembly内存管理和指针

iphone - 检测/修复内存泄漏

iphone - 在另一个类中使用一个类中的字符串变量

iphone - 基于indexPath.row启动UITableViewCells的问题