我有一个加载了pdf图像数据的UIImageView视图的子类,以便我可以在视图中使用独立于图形的分辨率。根据仪器泄漏情况显示,为了达到上述目的可以很好地工作,但是我发现内存泄漏。显示pdf图像时出现核心图形内存泄漏
下面是我认为应该对泄漏负责的代码。我试图找出这个问题,但我对如何查明问题有点模糊。
- (id)initWithPDFResourceAtPath:(NSString *)path center:(CGPoint)center {
if ((self = [super init])){
CGPDFPageRelease(pageRef);
CGPDFDocumentRef documentRef = CGPDFDocumentCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:path]);
pageRef = CGPDFDocumentGetPage(documentRef, 1);
CGPDFPageRetain(pageRef);
CGPDFDocumentRelease(documentRef);
[self setBounds];
}
return self;
}
-(void)setBounds {
[self setBounds:CGRectApplyAffineTransform(CGPDFPageGetBoxRect(pageRef, kCGPDFMediaBox), CGAffineTransformMakeScale(scaleH, scaleV))];
size = self.bounds.size;
[self getPDFimage];
}
-(void)getPDFimage {
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, scaleH, scaleV);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);
CGContextDrawPDFPage(context, pageRef);
[self setImage:UIGraphicsGetImageFromCurrentImageContext()];
}
尽管这不是一个答案,你也可以使用UIWebView显示PDF,并处理所有泄漏预防。 –
你有没有试过静态分析仪?它可以显示代码中潜在的泄漏位置。 – Jeepston
@MarkM很有意思。我会研究这一点。你有什么具体的材料可以指向我吗? – Mrwolfy